From 14bb2e332cafa06ebe0c6e402ec1521a095e4255 Mon Sep 17 00:00:00 2001 From: Cyrille Henry Date: Tue, 4 Jun 2013 13:21:57 +0000 Subject: debug : mass initialisation problem svn path=/trunk/externals/pmpd/; revision=17146 --- CHANGELOG.txt | 1 + pmpd2d_core.c | 21 ++++++++++++--------- 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)) -- cgit v1.2.1