diff options
author | N.N. <nimon@users.sourceforge.net> | 2005-04-20 15:33:15 +0000 |
---|---|---|
committer | N.N. <nimon@users.sourceforge.net> | 2005-04-20 15:33:15 +0000 |
commit | 23da1f7dc2d2c2984e4b391e69d7bbb26cca2430 (patch) | |
tree | e9adc97e6baf3c6d73fed20d298690b679a61d4c /msd2D | |
parent | 8f279ae3684cc3184a86752cf889b8c0ad7868da (diff) |
MSD Version 0.02
svn path=/trunk/externals/nusmuk/; revision=2795
Diffstat (limited to 'msd2D')
-rw-r--r-- | msd2D/help-msd2D.pd | 239 | ||||
-rwxr-xr-x | msd2D/main.cpp | 124 |
2 files changed, 233 insertions, 130 deletions
diff --git a/msd2D/help-msd2D.pd b/msd2D/help-msd2D.pd index 9662c14..d2f051a 100644 --- a/msd2D/help-msd2D.pd +++ b/msd2D/help-msd2D.pd @@ -1,78 +1,173 @@ -#N canvas 0 0 823 885 10; -#X obj 51 13 cnv 15 610 305 empty empty CREATION 20 12 0 14 -262131 +#N canvas 0 0 478 397 10; +#N canvas 271 52 742 843 masses 1; +#X obj 62 154 cnv 15 610 180 empty empty CREATION 20 12 0 14 -262131 -66577 0; -#X msg 68 42 reset; -#X text 238 73 Add a mass; -#X text 324 74 \$1 : Id (symbol); -#X text 323 94 \$2 : fixed or mobile (0/1); -#X text 323 112 \$3 : mass; -#X text 323 150 \$1 : Id (symbol); -#X text 235 150 Add a link; -#X text 322 170 \$2 : creation No of mass1; -#X text 322 188 \$3 : creation No of mass2; -#X text 321 206 \$4 : rigidity; -#X text 240 43 Delete all masses and links; -#X text 321 224 \$5 : viscosity; -#X text 321 241 \$6 : damping; -#X obj 51 323 cnv 15 610 60 empty empty COMPUTATION 20 12 0 14 -261689 +#X msg 79 183 reset; +#X text 249 214 Add a mass; +#X text 335 215 \$1 : Id (symbol); +#X text 334 235 \$2 : fixed or mobile (0/1); +#X text 334 253 \$3 : mass; +#X text 251 184 Delete all masses and links; +#X obj 62 338 cnv 15 610 60 empty empty COMPUTATION 20 12 0 14 -261689 -66577 0; -#X msg 71 352 bang; -#X text 224 352 Compute new masses positions; -#X obj 50 387 cnv 15 610 220 empty empty DYNAMIC_SETTING 20 12 0 14 +#X msg 82 367 bang; +#X text 235 367 Compute new masses positions; +#X obj 61 403 cnv 15 610 210 empty empty DYNAMIC_SETTING 20 12 0 14 -262131 -66577 0; -#X msg 158 409 setD \$1 \$2; -#X text 343 427 \$1 : Id (symbol); -#X text 343 445 \$2 : New value; -#X msg 76 409 setK \$1 \$2; -#X text 339 481 \$1 : Id (symbol); -#X text 339 499 \$2 : New value; -#X text 337 538 \$1 : Id (symbol); -#X text 337 556 \$2 : New value; -#X msg 76 461 posX \$1 \$2; -#X text 339 463 Set position of mass(es); -#X text 336 521 Add force on mass(es); -#X msg 74 520 forceX \$1 \$2; -#X msg 244 409 setD2 \$1 \$2; -#X text 343 409 Set rigidity \, viscosity or damping of link(s); -#X obj 49 616 cnv 15 610 198 empty empty GET_ATTRIBUTES 20 12 0 14 +#X text 350 449 \$1 : Id (symbol); +#X text 350 467 \$2 : New value; +#X text 348 503 \$1 : Id (symbol); +#X text 348 521 \$2 : New value; +#X msg 87 429 posX \$1 \$2; +#X text 350 431 Set position of mass(es); +#X text 347 486 Add force on mass(es); +#X msg 85 485 forceX \$1 \$2; +#X obj 61 617 cnv 15 610 198 empty empty GET_ATTRIBUTES 20 12 0 14 -261689 -66577 0; -#X msg 135 643 massePosL; -#X msg 135 671 masseForcesL; -#X text 236 643 output all masses positions in a list on outlet No +#X msg 147 644 massePosL; +#X msg 147 672 masseForcesL; +#X text 248 644 output all masses positions in a list on outlet No 1; -#X text 235 672 output all masses forces in a list on outlet No 1; -#X msg 134 709 get \$1 \$2; -#X text 237 710 Get specific attribute; -#X text 237 735 \$1 : Attribute type ( massesPos / massesSpeeds / massesForces +#X text 247 673 output all masses forces in a list on outlet No 1; +#X msg 146 710 get \$1 \$2; +#X text 249 711 Get specific attribute; +#X text 249 736 \$1 : Attribute type ( massesPos / massesSpeeds / massesForces / linksPos ); -#X text 237 772 \$2 : Id (symbol or creations numbers); -#X msg 65 150 link \$1 \$2 \$3 \$4 \$5 \$6; -#X msg 64 257 deleteMass \$1; -#X text 229 259 Delete a mass and associated links; -#X text 319 276 \$1 : Creation No of mass; -#X msg 63 293 deleteLink \$1; -#X text 228 295 Delete a link; -#X text 329 295 \$1 : Creation No of link; -#X msg 132 792 infosL; -#X text 235 792 Get infos on all masses and links on outlet No 2; -#X text 336 592 \$1 : Value; -#X obj 22 820 msd2D; -#X msg 169 519 forceY \$1 \$2; -#X msg 158 461 posY \$1 \$2; -#X msg 68 73 mass \$1 \$2 \$3 \$4 \$5; -#X text 323 130 \$4 \, \$5 : position; -#X msg 73 572 Xmin \$1 \, Xmax \$1 \, Ymin \$1 \, Ymax \$1; -#X text 336 575 Set minimimum and maximum of masses positions; -#X connect 1 0 51 0; -#X connect 15 0 51 0; -#X connect 21 0 51 0; -#X connect 26 0 51 0; -#X connect 29 0 51 0; -#X connect 33 0 51 0; -#X connect 34 0 51 0; -#X connect 37 0 51 0; -#X connect 41 0 51 0; -#X connect 42 0 51 0; -#X connect 45 0 51 0; -#X connect 48 0 51 0; -#X connect 54 0 51 0; +#X text 249 773 \$2 : Id (symbol or creations numbers); +#X msg 79 290 deleteMass \$1; +#X text 248 292 Delete a mass and associated links; +#X text 338 309 \$1 : Creation No of mass; +#X msg 144 793 infosL; +#X text 247 793 Get infos on all masses and links on outlet No 2; +#X text 347 555 \$1 : Value; +#X text 73 22 MASSES :; +#X text 66 69 They got only one physical parameter \, the value of +their; +#X text 67 83 mass. They can be mobile or fixed \, in this case forces +; +#X text 67 54 The msd masses are the principals objects of the model. +; +#X text 66 97 applied on them automatically \, by links \, or manually +\, by; +#X text 67 112 messages \, don't do anything.; +#X msg 81 578 setMobile \$1 \, setFixed \$1; +#X text 345 578 Change mobile parameter; +#X text 345 594 \$1 : Creation No of mass; +#X msg 79 214 mass \$1 \$2 \$3 \$4 \$5; +#X msg 188 430 posY \$1 \$2; +#X msg 186 486 forceY \$1 \$2; +#X obj 33 821 msd2D; +#X text 347 538 Set minimimum and maximum X \, Y of masses; +#X msg 84 538 Xmin \$1 \, Xmax \$1 \, Ymin \$1 \, Ymax \$1; +#X text 334 271 \$4 \, \$5 : initial position; +#X connect 1 0 46 0; +#X connect 8 0 46 0; +#X connect 15 0 46 0; +#X connect 18 0 46 0; +#X connect 20 0 46 0; +#X connect 21 0 46 0; +#X connect 24 0 46 0; +#X connect 28 0 46 0; +#X connect 31 0 46 0; +#X connect 40 0 46 0; +#X connect 43 0 46 0; +#X connect 48 0 46 0; +#X restore 221 312 pd masses; +#N canvas 222 83 808 841 links 0; +#X obj 62 250 cnv 15 610 305 empty empty CREATION 20 12 0 14 -262131 +-66577 0; +#X msg 79 279 reset; +#X text 338 308 \$1 : Id (symbol); +#X text 250 308 Add a link; +#X text 337 328 \$2 : creation No of mass1; +#X text 337 346 \$3 : creation No of mass2; +#X text 336 364 \$4 : rigidity; +#X text 251 280 Delete all masses and links; +#X text 336 382 \$5 : viscosity; +#X text 336 399 \$6 : damping; +#X obj 61 561 cnv 15 610 82 empty empty DYNAMIC_SETTING 20 12 0 14 +-262131 -66577 0; +#X msg 172 583 setD \$1 \$2; +#X text 354 601 \$1 : Id (symbol); +#X text 354 619 \$2 : New value; +#X msg 87 583 setK \$1 \$2; +#X msg 255 583 setD2 \$1 \$2; +#X text 354 583 Set rigidity \, viscosity or damping of link(s); +#X obj 60 650 cnv 15 610 140 empty empty GET_ATTRIBUTES 20 12 0 14 +-261689 -66577 0; +#X msg 75 679 get \$1 \$2; +#X text 237 680 Get specific attribute; +#X text 237 705 \$1 : Attribute type ( massesPos / massesSpeeds / massesForces +/ linksPos ); +#X text 237 742 \$2 : Id (symbol or creations numbers); +#X msg 78 308 link \$1 \$2 \$3 \$4 \$5 \$6; +#X msg 74 532 deleteLink \$1; +#X text 239 534 Delete a link; +#X text 340 534 \$1 : Creation No of link; +#X msg 73 762 infosL; +#X text 236 762 Get infos on all masses and links on outlet No 2; +#X msg 73 423 iLink \$1 \$2 \$3 \$4 \$5 \$6; +#X text 338 308 \$1 : Id (symbol); +#X text 250 308 Add a link; +#X text 337 328 \$2 : creation No of mass1; +#X text 337 346 \$3 : creation No of mass2; +#X text 336 364 \$4 : rigidity; +#X text 336 382 \$5 : viscosity; +#X text 336 399 \$6 : damping; +#X text 410 422 \$1 : Id (symbol); +#X text 409 478 \$4 : rigidity; +#X text 409 496 \$5 : viscosity; +#X text 409 513 \$6 : damping; +#X text 410 422 \$1 : Id (symbol); +#X text 409 478 \$4 : rigidity; +#X text 409 496 \$5 : viscosity; +#X text 409 513 \$6 : damping; +#X text 248 423 Add an interactor link; +#X text 94 52 LINKS :; +#X text 71 91 parameters : length \, rigidity \, viscosity and damping. +; +#X text 72 78 Links connect masses two by two. They got 4 physicals +; +#X text 70 134 the two masses at the creation.; +#X text 71 120 message. The lenght is initialised to the distance between +; +#X text 71 106 Rigidity \, viscosity and damping are defined by the +creation; +#X text 409 442 \$2 : Id (symbol) of masses type 1; +#X text 409 460 \$3 : Id (symbol) of masses type 2; +#X text 70 148 Interactor links are links between mutiples masses \, +instead; +#X text 70 161 of creation number \, the masses linked are defined +with; +#X text 69 175 their Id.; +#X obj 33 821 msd2D; +#X connect 1 0 56 0; +#X connect 14 0 56 0; +#X connect 18 0 56 0; +#X connect 22 0 56 0; +#X connect 23 0 56 0; +#X connect 26 0 56 0; +#X connect 28 0 56 0; +#X restore 223 342 pd links; +#X text 75 312 HELP on masses --->; +#X text 74 343 HELP on links --->; +#X text 13 117 There are 4 types of messages for msd :; +#X text 14 81 It is designed to implement particules physical model +in PD.The model is based on two elements type : mass and link.; +#X obj 13 132 cnv 15 420 30 empty empty empty 20 12 0 14 -262131 -66577 +0; +#X obj 13 165 cnv 15 420 30 empty empty empty 20 12 0 14 -261689 -66577 +0; +#X obj 13 198 cnv 15 420 30 empty empty empty 20 12 0 14 -262131 -66577 +0; +#X obj 13 231 cnv 15 420 30 empty empty empty 20 12 0 14 -261689 -66577 +0; +#X text 16 139 CREATION : To create the model masses and links.; +#X text 16 204 DYNAMIC SETTING : To set the model parameters dynamically. +; +#X text 16 237 ATTRIBUTES : To get the model parameters.; +#X text 16 166 COMPUTATION : To compute the new model state based on +previous instant.; +#X text 94 23 MSD2D : mass - spring - damper model; +#X text 15 68 MSD2D is the 2D object of the msd objects collection. +; diff --git a/msd2D/main.cpp b/msd2D/main.cpp index 863513c..7872cbf 100755 --- a/msd2D/main.cpp +++ b/msd2D/main.cpp @@ -101,6 +101,7 @@ public: protected: // --------------------------------------------------------------- RESET +// ---------------------------------------------------------------------- void m_reset() { @@ -121,6 +122,7 @@ protected: } // -------------------------------------------------------------- COMPUTE +// ----------------------------------------------------------------------- void m_bang() { @@ -131,57 +133,58 @@ protected: for (i=0; i<nb_link; i++) {
// compute link forces distance = sqrt(pow(link[i]->mass1->posX-link[i]->mass2->posX,2) + - pow(link[i]->mass1->posY-link[i]->mass2->posY,2)); - F = link[i]->K1 * (distance - link[i]->longueur) ; // F = k1(x1-x2) - F += link[i]->D1 * (distance - link[i]->distance_old) ; // F = F + D1(v1-v2) + pow(link[i]->mass1->posY-link[i]->mass2->posY,2)); // L[n] = sqrt( (x1-x2)² +(y1-y2)²) + F = link[i]->K1 * (distance - link[i]->longueur) ; // F[n] = k1 (L[n] - L[0]) + F += link[i]->D1 * (distance - link[i]->distance_old) ; // F[n] = F[n] + D1 (L[n] - L[n-1]) if (distance != 0) { - Fx = F * (link[i]->mass1->posX - link[i]->mass2->posX)/distance; - Fy = F * (link[i]->mass1->posY - link[i]->mass2->posY)/distance; + Fx = F * (link[i]->mass1->posX - link[i]->mass2->posX)/distance; // Fx = F * Lx[n]/L[n] + Fy = F * (link[i]->mass1->posY - link[i]->mass2->posY)/distance; // Fy = F * Ly[n]/L[n] }
- link[i]->mass1->forceX -= Fx; - link[i]->mass1->forceX -= link[i]->D2*link[i]->mass1->speedX;
- link[i]->mass2->forceX += Fx; - link[i]->mass2->forceX -= link[i]->D2*link[i]->mass2->speedX; - link[i]->mass1->forceY -= Fy; - link[i]->mass1->forceY -= link[i]->D2*link[i]->mass1->speedY;
- link[i]->mass2->forceY += Fy; - link[i]->mass2->forceY -= link[i]->D2*link[i]->mass2->speedY; - link[i]->distance_old = distance; + link[i]->mass1->forceX -= Fx; // Fx1[n] = -Fx + link[i]->mass1->forceX -= link[i]->D2*link[i]->mass1->speedX; // Fx1[n] = Fx1[n] - D2 * vx1[n-1]
+ link[i]->mass2->forceX += Fx; // Fx2[n] = Fx + link[i]->mass2->forceX -= link[i]->D2*link[i]->mass2->speedX; // Fx2[n] = Fx2[n] - D2 * vx2[n-1] + link[i]->mass1->forceY -= Fy; // Fy1[n] = -Fy + link[i]->mass1->forceY -= link[i]->D2*link[i]->mass1->speedY; // Fy1[n] = Fy1[n] - D2 * vy1[n-1]
+ link[i]->mass2->forceY += Fy; // Fy2[n] = Fy + link[i]->mass2->forceY -= link[i]->D2*link[i]->mass2->speedY; // Fy1[n] = Fy1[n] - D2 * vy1[n-1] + link[i]->distance_old = distance; // L[n-1] = L[n] } for (i=0; i<nb_mass; i++)
// compute new masses position only if mobile = 1
if (mass[i]->mobile == 1) {
- X_new = mass[i]->forceX * mass[i]->invM + 2*mass[i]->posX - mass[i]->posX2; - mass[i]->posX2 = mass[i]->posX; - mass[i]->posX = max(min(X_new,Xmax),Xmin); // x = x + v - mass[i]->speedX = mass[i]->posX - mass[i]->posX2; // v = v + F/M - Y_new = mass[i]->forceY * mass[i]->invM + 2*mass[i]->posY - mass[i]->posY2; - mass[i]->posY2 = mass[i]->posY; - mass[i]->posY = max(min(Y_new,Ymax),Ymin); // x = x + v - mass[i]->speedY = mass[i]->posY - mass[i]->posY2; // v = v + F/M + X_new = mass[i]->forceX * mass[i]->invM + 2*mass[i]->posX - mass[i]->posX2; // x[n] =Fx[n]/M+2x[n]-x[n-1] + mass[i]->posX2 = mass[i]->posX; // x[n-2] = x[n-1] + mass[i]->posX = max(min(X_new,Xmax),Xmin); // x[n-1] = x[n] + mass[i]->speedX = mass[i]->posX - mass[i]->posX2; // vx[n] = x[n] - x[n-1] + Y_new = mass[i]->forceY * mass[i]->invM + 2*mass[i]->posY - mass[i]->posY2; // x[n] =Fx[n]/M+2x[n]-x[n-1] + mass[i]->posY2 = mass[i]->posY; // x[n-2] = x[n-1] + mass[i]->posY = max(min(Y_new,Ymax),Ymin); // x[n-1] = x[n] + mass[i]->speedY = mass[i]->posY - mass[i]->posY2; // vx[n] = x[n] - x[n-1] } for (i=0; i<nb_mass; i++) {
// clear forces mass[i]->out_forceX = mass[i]->forceX;
- mass[i]->forceX = 0; + mass[i]->forceX = 0; // Fx[n] = 0 mass[i]->out_forceY = mass[i]->forceY;
- mass[i]->forceY = 0; + mass[i]->forceY = 0; // Fy[n] = 0 }
} // -------------------------------------------------------------- MASSES +// ---------------------------------------------------------------------- void m_mass(int argc,t_atom *argv)
// add a mass
- // Id, nbr, mobile, invM, speedX, posX, forceX
+ // Id, nbr, mobile, invM, speedX Y, posX Y, forceX Y
{ t_atom sortie[6], aux[2]; t_float M; - mass[nb_mass] = new t_mass; // new pointer
- mass[nb_mass]->Id = GetSymbol(argv[0]); // ID + mass[nb_mass] = new t_mass; // new mass
+ mass[nb_mass]->Id = GetSymbol(argv[0]); // ID mass[nb_mass]->mobile = GetInt(argv[1]); // mobile if (GetFloat(argv[2])==0) M=1; @@ -195,7 +198,7 @@ protected: mass[nb_mass]->posY = GetFloat(argv[4]); // y[n] mass[nb_mass]->posY2 = GetFloat(argv[4]); // y[n-1]
mass[nb_mass]->forceY = 0; // Fy[n] - mass[nb_mass]->nbr = id_mass; // id_nbr + mass[nb_mass]->nbr = id_mass; // id number nb_mass++ ; id_mass++;
nb_mass = min ( nb_max_mass -1, nb_mass ); @@ -297,6 +300,7 @@ protected: t_int i,nb_link_delete=0; t_atom sortie[6], aux[nb_link]; + // Delete associated links for (i=0; i<nb_link;i++) { if (link[i]->mass1->nbr == GetInt(argv[0]) || link[i]->mass2->nbr == GetInt(argv[0])) { SetFloat((aux[nb_link_delete]),link[i]->nbr); @@ -307,7 +311,7 @@ protected: for (i=0; i<nb_link_delete;i++) m_delete_link(1,&aux[i]); - + // delete mass for (i=0; i<nb_mass;i++) if (mass[i]->nbr == GetAInt(argv[0])) { SetFloat((sortie[0]),mass[i]->nbr); @@ -327,29 +331,30 @@ protected: void m_Xmax(int argc,t_atom *argv) {
- // set damping of link(s) named Id + // set X max Xmax = GetFloat(argv[0]); } void m_Ymax(int argc,t_atom *argv) {
- // set damping of link(s) named Id + // set Y max Ymax = GetFloat(argv[0]); } void m_Xmin(int argc,t_atom *argv) {
- // set damping of link(s) named Id + // set X min Xmin = GetFloat(argv[0]); } void m_Ymin(int argc,t_atom *argv) {
- // set damping of link(s) named Id + // set Y min Ymin = GetFloat(argv[0]); } // -------------------------------------------------------------- LINKS +// --------------------------------------------------------------------- void m_link(int argc,t_atom *argv) // add a link
@@ -358,21 +363,21 @@ protected: t_atom sortie[7], aux[2]; t_int i; - link[nb_link] = new t_link; + link[nb_link] = new t_link; // new link link[nb_link]->Id = GetSymbol(argv[0]); for (i=0; i<nb_mass;i++) - if (mass[i]->nbr==GetAInt(argv[1])) + if (mass[i]->nbr==GetAInt(argv[1])) // pointer on mass 1 link[nb_link]->mass1 = mass[i]; - else if(mass[i]->nbr==GetAInt(argv[2])) + else if(mass[i]->nbr==GetAInt(argv[2])) // pointer on mass 2 link[nb_link]->mass2 = mass[i]; - link[nb_link]->K1 = GetFloat(argv[3]);
- link[nb_link]->D1 = GetFloat(argv[4]); - link[nb_link]->D2 = GetFloat(argv[5]); - link[nb_link]->longx = link[nb_link]->mass1->posX - link[nb_link]->mass2->posX; - link[nb_link]->longy = link[nb_link]->mass1->posY - link[nb_link]->mass2->posY; - link[nb_link]->longueur = sqrt( pow(link[nb_link]->longx,2) + pow(link[nb_link]->longy,2)); - link[nb_link]->nbr = id_link; - link[nb_link]->distance_old = link[nb_link]->longueur; + link[nb_link]->K1 = GetFloat(argv[3]); // K1
+ link[nb_link]->D1 = GetFloat(argv[4]); // D1 + link[nb_link]->D2 = GetFloat(argv[5]); // D2 + link[nb_link]->longx = link[nb_link]->mass1->posX - link[nb_link]->mass2->posX; // Lx[0] + link[nb_link]->longy = link[nb_link]->mass1->posY - link[nb_link]->mass2->posY; // Ly[0] + link[nb_link]->longueur = sqrt( pow(link[nb_link]->longx,2) + pow(link[nb_link]->longy,2)); // L[0] = sq( Lx[0]²+Ly[0]²) + link[nb_link]->nbr = id_link; // id number + link[nb_link]->distance_old = link[nb_link]->longueur;// L[n-1] nb_link++; id_link++;
nb_link = min ( nb_max_link -1, nb_link ); @@ -415,7 +420,7 @@ protected: SetSymbol((arglist[0]),GetSymbol(argv[0])); SetFloat((arglist[1]),mass[imass1[i]]->nbr); SetFloat((arglist[2]),mass[imass2[j]]->nbr); - SetFloat((arglist[3]),GetAInt(argv[3])); + SetFloat((arglist[3]),GetFloat(argv[3])); SetFloat((arglist[4]),GetFloat(argv[4])); SetFloat((arglist[5]),GetFloat(argv[5])); m_link(6,arglist); @@ -437,7 +442,7 @@ protected: void m_setD(int argc,t_atom *argv) {
- // set damping of link(s) named Id + // set viscosity of link(s) named Id t_int i; const t_symbol *sym = GetSymbol(argv[0]); @@ -477,7 +482,7 @@ protected: SetFloat((sortie[5]),link[i]->D1); SetFloat((sortie[6]),link[i]->D2); delete link[i]; - link[i]=link[nb_link-1]; + link[i]=link[nb_link-1]; // copy last link instead nb_link--; ToOutAnything(1,S_Link_deleted,7,sortie); break; @@ -486,7 +491,7 @@ protected: // -------------------------------------------------------------- GET - +// ------------------------------------------------------------------- void m_get(int argc,t_atom *argv) // get attributes { @@ -498,21 +503,21 @@ protected: if (argc == 1) { - if (auxtype == S_massesPos)// get all masses positions + if (auxtype == S_massesPos) // get all masses positions for (i=0; i<nb_mass; i++) { SetFloat(sortie[0],mass[i]->posX); SetFloat(sortie[1],mass[i]->posY); ToOutAnything(0,S_massesPos,2,sortie); } - else if (auxtype == S_massesForces)// get all masses forces + else if (auxtype == S_massesForces) // get all masses forces for (i=0; i<nb_mass; i++) { SetFloat(sortie[0],mass[i]->out_forceX); SetFloat(sortie[1],mass[i]->out_forceY); ToOutAnything(0,S_massesForces,2,sortie); } - else if (auxtype == S_linksPos)// get all links positions + else if (auxtype == S_linksPos) // get all links positions for (i=0; i<nb_link; i++) { SetFloat(sortie[0],link[i]->mass1->posX); @@ -521,7 +526,7 @@ protected: SetFloat(sortie[3],link[i]->mass2->posY); ToOutAnything(0,S_linksPos,4,sortie); } - else // get all masses speeds + else // get all masses speeds for (i=0; i<nb_mass; i++) { SetFloat(sortie[0],mass[i]->speedX); @@ -529,7 +534,7 @@ protected: ToOutAnything(0,S_massesSpeeds,2,sortie); } } - else if (auxtype == S_massesPos) // get mass positions + else if (auxtype == S_massesPos) // get mass positions { if (auxarg == 0) // No { @@ -559,7 +564,7 @@ protected: } } } - else if (auxtype == S_massesForces) // get mass forces + else if (auxtype == S_massesForces) // get mass forces { if (auxarg == 0) // No { @@ -589,7 +594,7 @@ protected: } } } - else if (auxtype == S_linksPos) // get links positions + else if (auxtype == S_linksPos) // get links positions { if (auxarg == 0) // No { @@ -623,7 +628,7 @@ protected: } } } - else // get mass speeds + else // get mass speeds { if (auxarg == 0) // No { @@ -671,7 +676,7 @@ protected: } void m_force_dumpl() - // List of masses positions on first outlet + // List of masses forces on first outlet { t_atom sortie[2*nb_mass]; t_int i; @@ -684,7 +689,7 @@ protected: } void m_info_dumpl() - // List of masses positions on first outlet + // List of infos on masses and links on first outlet { t_atom sortie[7]; t_int i; @@ -713,6 +718,7 @@ protected: } // -------------------------------------------------------------- GLOBAL VARIABLES +// -------------------------------------------------------------------------------- t_link * link[nb_max_link];
t_mass * mass[nb_max_mass]; @@ -720,9 +726,11 @@ protected: int nb_link, nb_mass, id_mass, id_link; // -------------------------------------------------------------- SETUP +// --------------------------------------------------------------------- private: + // static symbols const static t_symbol *S_Reset; const static t_symbol *S_Mass; const static t_symbol *S_Link; |