aboutsummaryrefslogtreecommitdiff
path: root/pmpd3d_various.c
diff options
context:
space:
mode:
authorCyrille Henry <nusmuk@users.sourceforge.net>2013-05-09 10:19:08 +0000
committerCyrille Henry <nusmuk@users.sourceforge.net>2013-05-09 10:19:08 +0000
commite1c925662babea0dc0c6ecda552d244b9039dc70 (patch)
tree5a031ac358331235c2bae565ba3729a31150cb31 /pmpd3d_various.c
parent3c3878f5ed455573123ebe61dce9601df8dab35f (diff)
add distance X, Y and Z in massDistance for pmpd 2d and 3d
svn path=/trunk/externals/pmpd/; revision=17118
Diffstat (limited to 'pmpd3d_various.c')
-rw-r--r--pmpd3d_various.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/pmpd3d_various.c b/pmpd3d_various.c
index c67fc89..e05fc23 100644
--- a/pmpd3d_various.c
+++ b/pmpd3d_various.c
@@ -355,21 +355,22 @@ void pmpd3d_closestMass(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv)
void pmpd3d_massDistances_f_f(t_pmpd3d *x, t_int i, t_int j)
{
- t_float dist, tmp;
- t_atom to_out[3];
-
- tmp = x->mass[i].posX - x->mass[j].posX;
- dist = sqr(tmp);
- tmp = x->mass[i].posY - x->mass[j].posY;
- dist += sqr(tmp);
- tmp = x->mass[i].posZ - x->mass[j].posZ;
- dist += sqr(tmp);
+ t_float dist, tmp,dx,dy,dz;
+ t_atom to_out[6];
+
+ dx = x->mass[i].posX - x->mass[j].posX;
+ dy = x->mass[i].posY - x->mass[j].posY;
+ dz = x->mass[i].posZ - x->mass[j].posZ;
+ dist = sqr(dx) + sqr(dy) + sqr(dz);
dist = sqrt(dist);
SETFLOAT(&(to_out[0]), i);
SETFLOAT(&(to_out[1]), j);
- SETFLOAT(&(to_out[2]), dist);
- outlet_anything(x->main_outlet, gensym("distance"), 3, to_out);
+ SETFLOAT(&(to_out[2]), dx);
+ SETFLOAT(&(to_out[3]), dy);
+ SETFLOAT(&(to_out[4]), dz);
+ SETFLOAT(&(to_out[5]), dist);
+ outlet_anything(x->main_outlet, gensym("distance"), 6, to_out);
}
void pmpd3d_massDistances(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv)