From d6aeb7ce5870ac9a95e20a39660664a3f4e9d4be Mon Sep 17 00:00:00 2001 From: Cyrille Henry Date: Sat, 16 Feb 2013 14:10:59 +0000 Subject: bugfix svn path=/trunk/externals/pmpd/; revision=17036 --- pmpd3d_various.c | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) (limited to 'pmpd3d_various.c') 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) -- cgit v1.2.1