diff options
author | Cyrille Henry <nusmuk@users.sourceforge.net> | 2013-02-16 14:10:59 +0000 |
---|---|---|
committer | Cyrille Henry <nusmuk@users.sourceforge.net> | 2013-02-16 14:10:59 +0000 |
commit | d6aeb7ce5870ac9a95e20a39660664a3f4e9d4be (patch) | |
tree | 22770c04d350b623c2ea56b9d9b0ce639294c5cd /pmpd3d_various.c | |
parent | edf303ef16f2a2b5de904821794d866465057e26 (diff) |
bugfix
svn path=/trunk/externals/pmpd/; revision=17036
Diffstat (limited to 'pmpd3d_various.c')
-rw-r--r-- | pmpd3d_various.c | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/pmpd3d_various.c b/pmpd3d_various.c index b8a8bee..5b1915c 100644 --- a/pmpd3d_various.c +++ b/pmpd3d_various.c @@ -359,11 +359,11 @@ void pmpd3d_massesDistances_f_f(t_pmpd3d *x, t_int i, t_int j) t_atom to_out[3]; tmp = x->mass[i].posX - x->mass[j].posX; - dist = tmp*tmp; + dist = sqr(tmp); tmp = x->mass[i].posY - x->mass[j].posY; - dist += tmp*tmp; + dist += sqr(tmp); tmp = x->mass[i].posZ - x->mass[j].posZ; - dist += tmp*tmp; + dist += sqr(tmp); dist = sqrt(dist); SETFLOAT(&(to_out[0]), i); @@ -416,6 +416,36 @@ void pmpd3d_massesDistances(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) } } } + else if (argc == 0) + { + for (i=0; i < x->nb_mass; i++) + { + for (j=i+1; j < x->nb_mass; j++) + { + pmpd3d_massesDistances_f_f(x,i, j); + } + } + } + else if ((argc == 1) && (argv[0].a_type == A_SYMBOL) ) + { + for (i=0; i < x->nb_mass; i++) + { + if ( atom_getsymbolarg(0,argc,argv) == x->mass[i].Id) + { + for (j=i+1; j < x->nb_mass; j++) + { + pmpd3d_massesDistances_f_f(x,i, j); + } + } + } + } + else if ( (argc == 1) && (argv[0].a_type == A_FLOAT) ) + { + for (i=0; i < x->nb_mass; i++) + { + pmpd3d_massesDistances_f_f(x, atom_getfloatarg(0, argc, argv), i); + } + } } void pmpd3d_forcesXT(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) |