From 7f927c2f4a64c883eaab73472291c8aed2d769a8 Mon Sep 17 00:00:00 2001 From: Cyrille Henry Date: Mon, 11 Feb 2013 16:57:35 +0000 Subject: lot's of new features... svn path=/trunk/externals/pmpd/; revision=17031 --- pmpd3d_various.c | 257 ------------------------------------------------------- 1 file changed, 257 deletions(-) (limited to 'pmpd3d_various.c') diff --git a/pmpd3d_various.c b/pmpd3d_various.c index 5ff2ec5..88713c6 100644 --- a/pmpd3d_various.c +++ b/pmpd3d_various.c @@ -418,263 +418,6 @@ void pmpd3d_massesDistances(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) } } -void pmpd3d_enumMasses(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) -{ - t_int i, j, test, tmp, tmp2; - t_atom std_out[1]; - - - for (i=0; i < x->nb_mass; i++) - { - j = 0; - test = 1; - - while ( (j < argc-1) && (test) ) - { - if (atom_getsymbolarg(j,argc,argv) == gensym("Id") ) - { - if ( x->mass[i].Id != atom_getsymbolarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("posXSup") ) - { - if ( x->mass[i].posX < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("posXInf") ) - { - if ( x->mass[i].posX > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("posYSup") ) - { - if ( x->mass[i].posY < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("posYInf") ) - { - if ( x->mass[i].posY > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("posZSup") ) - { - if ( x->mass[i].posZ < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("posZInf") ) - { - if ( x->mass[i].posZ > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("speedXSup") ) - { - if ( x->mass[i].speedX < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("speedXInf") ) - { - if ( x->mass[i].speedX > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("speedYSup") ) - { - if ( x->mass[i].speedY < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("speedYInf") ) - { - if ( x->mass[i].speedY > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("speedZSup") ) - { - if ( x->mass[i].speedZ < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("speedZInf") ) - { - if ( x->mass[i].speedZ > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("speedSup") ) - { - tmp = x->mass[i].speedX * x->mass[i].speedX; - tmp += x->mass[i].speedY * x->mass[i].speedY; - tmp += x->mass[i].speedZ * x->mass[i].speedZ; - - if ( ( tmp < atom_getfloatarg(j+1,argc,argv)) * atom_getfloatarg(j+1,argc,argv) ) test = 0; - - j+= 2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("speedInf") ) - { - tmp = x->mass[i].speedX * x->mass[i].speedX; - tmp += x->mass[i].speedY * x->mass[i].speedY; - tmp += x->mass[i].speedZ * x->mass[i].speedZ; - - if ( ( tmp > atom_getfloatarg(j+1,argc,argv)) * atom_getfloatarg(j+1,argc,argv) ) test = 0; - j+=2; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("distanceCircleInf")) - { - tmp = x->mass[i].posX - atom_getfloatarg(j+1,argc,argv); - tmp *= tmp; - tmp2 = x->mass[i].posY - atom_getfloatarg(j+2,argc,argv); - tmp = tmp + tmp2 * tmp2; - tmp2 = x->mass[i].posZ - atom_getfloatarg(j+3,argc,argv); - tmp = tmp + tmp2 * tmp2; - tmp2 = atom_getfloatarg(j+4,argc,argv); - - if ( tmp > (tmp2 * tmp2) ) test = 0; - j += 5; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("distanceCircleSup")) - { - tmp = x->mass[i].posX - atom_getfloatarg(j+1,argc,argv); - tmp *= tmp; - tmp2 = x->mass[i].posY - atom_getfloatarg(j+2,argc,argv); - tmp = tmp + tmp2 * tmp2; - tmp2 = x->mass[i].posZ - atom_getfloatarg(j+3,argc,argv); - tmp = tmp + tmp2 * tmp2; - tmp2 = atom_getfloatarg(j+4,argc,argv); - - if ( tmp < (tmp2 * tmp2) ) test = 0; - j += 5; - } - // mass weight - else - { - post("nor reconize %s",atom_getsymbolarg(j,argc,argv)); - j+=1; - } - } - if (test) - { - SETFLOAT(&(std_out[0]),i); - outlet_anything(x->main_outlet, gensym("listMasses"),1,std_out); - } - } -} - -void pmpd3d_enumLinks(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) -{ - t_int i, j, test, tmp, tmp2; - t_atom std_out[1]; - - - for (i=0; i < x->nb_link; i++) - { - j = 0; - test = 1; - - while ( (j < argc-1) && (test) ) - { - - if (atom_getsymbolarg(j,argc,argv) == gensym("Id") ) - { - if ( x->link[i].Id != atom_getsymbolarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("forcesXSup") ) - { - if ( x->link[i].forceX < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("forcesXInf") ) - { - if ( x->link[i].forceX > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("forcesYSup") ) - { - if ( x->link[i].forceY < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("forcesYInf") ) - { - if ( x->link[i].forceY > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("forcesZSup") ) - { - if ( x->link[i].forceZ < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("forcesZInf") ) - { - if ( x->link[i].forceZ > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("forcesSup") ) - { - tmp = x->link[i].forceX; - tmp *= tmp; - tmp2 = x->link[i].forceY; - tmp = tmp + tmp2*tmp2; - tmp2 = x->link[i].forceZ; - tmp = tmp + tmp2*tmp2; - - tmp2 = atom_getfloatarg(j+1,argc,argv); - tmp2 *= tmp2; - - if ( tmp < tmp2 ) { test = 0; j+=2;} - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("forcesInf") ) - { - tmp = x->link[i].forceX; - tmp = tmp * tmp; - tmp2 = x->link[i].forceY; - tmp = tmp + tmp2*tmp2; - tmp2 = x->link[i].forceZ; - tmp = tmp + tmp2*tmp2; - - tmp2 = atom_getfloatarg(j+1,argc,argv); - tmp2 *= tmp2; - - if ( tmp > tmp2 ) { test = 0; j+=2;} - } - else if (atom_getsymbolarg(j,argc,argv) == gensym("lengthSup") ) - { - if ( x->link[i].distance < atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("lengthInf") ) - { - if ( x->link[i].distance > atom_getfloatarg(j+1,argc,argv) ) { test = 0; } - j+=2; - } - else if ( atom_getsymbolarg(j,argc,argv) == gensym("connectedTo") ) - { - if (argv[j+1].a_type == A_SYMBOL) - { - if (!( (x->link[i].mass1->Id == atom_getsymbolarg(j+1,argc,argv)) || (x->link[i].mass2->Id == atom_getsymbolarg(j+1,argc,argv)) )) - { test = 0; j+=2;} - } - else if (argv[j+1].a_type == A_FLOAT) - { - if (!( (x->link[i].mass1->num == atom_getfloatarg(j+1,argc,argv)) || (x->link[i].mass2->num == atom_getfloatarg(j+1,argc,argv)) )) - { test = 0; j+=2;} - } - else - { - post("bad argument for connectedTo"); - j+=1; - } - } - else - { - post("nor reconize %s",atom_getsymbolarg(j,argc,argv)); - j+=1; - } - } - if (test) - { - SETFLOAT(&(std_out[0]),i); - outlet_anything(x->main_outlet, gensym("listLinks"),1,std_out); - } - } -} - void pmpd3d_forcesXT(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) { // add forces to masses. forces comes from a table, masse can be filter on ther Id or not -- cgit v1.2.1