aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Henry <nusmuk@users.sourceforge.net>2013-06-04 13:21:57 +0000
committerCyrille Henry <nusmuk@users.sourceforge.net>2013-06-04 13:21:57 +0000
commit14bb2e332cafa06ebe0c6e402ec1521a095e4255 (patch)
tree85256a7416ab2917e808972b815d8a3fdb88ca34
parent43c2ad70c52a9373897ee296a7254ee16c6dea34 (diff)
debug : mass initialisation problem
svn path=/trunk/externals/pmpd/; revision=17146
-rw-r--r--CHANGELOG.txt1
-rw-r--r--pmpd2d_core.c21
2 files changed, 13 insertions, 9 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 8916413..47a1ad4 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -25,3 +25,4 @@ from version 0.10 to version 0.11
- debug "setL Id" with no arg : bad computation of link length (2d / 3d)
- lot's of bugfix
- switch to makefile template 1.0.14
+- addd default aguments for mass and link creation. (this allow to create a mass with a [mass< message better than [mass mass 1 1 0< message)
diff --git a/pmpd2d_core.c b/pmpd2d_core.c
index 8bce0e7..b60c148 100644
--- a/pmpd2d_core.c
+++ b/pmpd2d_core.c
@@ -172,23 +172,23 @@ void pmpd2d_mass(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv)
// t_symbol *Id, t_float mobile, t_float M, t_float posX, t_float posY)
{ // add a mass
x->mass[x->nb_mass].Id = gensym("mass");
- if ((argc >= 1) && (argv[0].a_type == A_SYMBOL))
+ if ((argc > 0) && (argv[0].a_type == A_SYMBOL))
x->mass[x->nb_mass].Id = atom_getsymbolarg(0,argc,argv);
x->mass[x->nb_mass].mobile = 1;
- if ((argc >= 2) && (argv[1].a_type == A_FLOAT))
+ if ((argc > 1) && (argv[1].a_type == A_FLOAT))
x->mass[x->nb_mass].mobile = (int) atom_getfloatarg(1, argc, argv);
t_float M = 1;
- if ((argc >= 3) && (argv[2].a_type == A_FLOAT))
- M = atom_getfloatarg(3, argc, argv);
+ if ((argc > 2) && (argv[2].a_type == A_FLOAT))
+ M = atom_getfloatarg(2, argc, argv);
if (M<=0) M=1;
x->mass[x->nb_mass].invM = 1/M;
x->mass[x->nb_mass].speedX = 0;
x->mass[x->nb_mass].speedY = 0;
x->mass[x->nb_mass].posX = 0;
- if ((argc >= 4) && (argv[3].a_type == A_FLOAT))
+ if ((argc > 3) && (argv[3].a_type == A_FLOAT))
x->mass[x->nb_mass].posX = atom_getfloatarg(3, argc, argv);
x->mass[x->nb_mass].posY = 0;
- if ((argc >= 5) && (argv[4].a_type == A_FLOAT))
+ if ((argc > 4) && (argv[4].a_type == A_FLOAT))
x->mass[x->nb_mass].posY = atom_getfloatarg(4, argc, argv);
x->mass[x->nb_mass].forceX = 0;
x->mass[x->nb_mass].forceY = 0;
@@ -203,6 +203,9 @@ void pmpd2d_mass(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv)
void pmpd2d_create_link(t_pmpd2d *x, t_symbol *Id, int mass1, int mass2, t_float K, t_float D, t_float Pow, t_float Lmin, t_float Lmax, t_int type)
{ // create a link based on mass number
+
+ // post("%d,%d, K:%f, D:%f, Pow:%f, Lmin:%f, Lmax:%f", mass1, mass2, K, D, Pow, Lmin, Lmax);
+
if ((x->nb_mass>1) && (mass1 != mass2) && (mass1 >= 0) && (mass2 >= 0) && (mass1 < x->nb_mass) && (mass2 < x->nb_mass) )
{
x->link[x->nb_link].lType = type;
@@ -228,13 +231,13 @@ void pmpd2d_link(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv)
int i, j;
t_symbol *Id = gensym("link");
- if ((argc >= 1) && (argv[0].a_type == A_SYMBOL))
+ if ((argc > 0) && (argv[0].a_type == A_SYMBOL))
Id = atom_getsymbolarg(0,argc,argv);
t_float K = 0;
- if ((argc >= 4) && (argv[3].a_type == A_FLOAT))
+ if ((argc > 3) && (argv[3].a_type == A_FLOAT))
K = atom_getfloatarg(3, argc, argv);
t_float D = 0;
- if ((argc >= 5) && (argv[4].a_type == A_FLOAT))
+ if ((argc > 4) && (argv[4].a_type == A_FLOAT))
D = atom_getfloatarg(4, argc, argv);
t_float Pow = 1;
if ((argc > 5) && (argv[5].a_type == A_FLOAT))