Update of /cvsroot/pure-data/externals/nusmuk/msd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13192/msd
Modified Files: 02_imsdtest.pd 03_msdwave.pd main.cpp Log Message: MSD Version 0.04
Index: main.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/nusmuk/msd/main.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** main.cpp 26 Apr 2005 11:39:49 -0000 1.6 --- main.cpp 26 Apr 2005 16:10:07 -0000 1.7 *************** *** 31,35 **** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! Version 0.03 -- 21.04.2005 */
--- 31,35 ---- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! Version 0.04 -- 26.04.2005 */
*************** *** 39,43 ****
// define constants ! #define MSD_VERSION 0.03 #define nb_max_link 4000 #define nb_max_mass 4000 --- 39,43 ----
// define constants ! #define MSD_VERSION 0.04 #define nb_max_link 4000 #define nb_max_mass 4000 *************** *** 136,140 **** t_int i; struct _mass mass_1, mass_2; ! for (i=0; i<nb_link; i++) { // compute link forces --- 136,142 ---- t_int i; struct _mass mass_1, mass_2; ! ! ! for (i=0; i<nb_link; i++) { // compute link forces *************** *** 155,162 **** link[i]->mass2->forceX -= link[i]->D2*link[i]->mass2->speedX; // Fx2[n] = Fx2[n] - D2 * vx2[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 --- 157,164 ---- link[i]->mass2->forceX -= link[i]->D2*link[i]->mass2->speedX; // Fx2[n] = Fx2[n] - D2 * vx2[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 *************** *** 199,203 **** mass[nb_mass]->forceX = 0; // Fx[n] mass[nb_mass]->nbr = id_mass; // id number ! nb_mass++ ; id_mass++; nb_mass = min ( nb_max_mass -1, nb_mass ); --- 201,205 ---- mass[nb_mass]->forceX = 0; // Fx[n] mass[nb_mass]->nbr = id_mass; // id number ! nb_mass++; id_mass++; nb_mass = min ( nb_max_mass -1, nb_mass ); *************** *** 351,399 **** t_atom sortie[7], aux[2]; t_int i;
! if (argc < 6 || argc > 8) ! error("link : Id Nomass1 Nomass2 K D1 D2 (Lmin Lmax)"); ! link[nb_link] = new t_link; // New pointer ! link[nb_link]->Id = GetSymbol(argv[0]); // ID ! for (i=0; i<nb_mass;i++) ! if (mass[i]->nbr==GetAInt(argv[1])) // pointer to mass1 ! link[nb_link]->mass1 = mass[i]; ! else if(mass[i]->nbr==GetAInt(argv[2])) // pointer to mass2 ! link[nb_link]->mass2 = mass[i]; ! 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] ! if (link[nb_link]->longx < 0) ! link[nb_link]->longueur = -link[nb_link]->longx; ! else ! link[nb_link]->longueur = link[nb_link]->longx ;// L[0] ! link[nb_link]->nbr = id_link; // id number ! link[nb_link]->distance_old = link[nb_link]->longueur; // L[n-1] ! switch (argc) { ! case 6 : ! link[nb_link]->long_max = 32768; ! link[nb_link]->long_min = 0; ! break; ! case 7 : ! link[nb_link]->long_min = GetFloat(argv[6]); ! link[nb_link]->long_max = 32768; ! break; ! case 8 : ! link[nb_link]->long_min = GetFloat(argv[6]); ! link[nb_link]->long_max = GetFloat(argv[7]); ! break; ! } ! nb_link++; ! id_link++; ! nb_link = min ( nb_max_link -1, nb_link ); ! SetFloat((sortie[0]),id_link-1); ! SetSymbol((sortie[1]),link[nb_link-1]->Id); ! SetFloat((sortie[2]),GetInt(argv[1])); ! SetFloat((sortie[3]),GetInt(argv[2])); ! SetFloat((sortie[4]),link[nb_link-1]->K1); ! SetFloat((sortie[5]),link[nb_link-1]->D1); ! SetFloat((sortie[6]),link[nb_link-1]->D2); ! ToOutAnything(1,S_Link,7,sortie); }
--- 353,415 ---- t_atom sortie[7], aux[2]; t_int i; + t_mass *mass1 = NULL; + t_mass *mass2 = NULL; + + if (argc < 6 || argc > 8) + error("link : Id Nomass1 Nomass2 K D1 D2 (Lmin Lmax)"); + + // check for existence of link masses: + for (i=0; i<nb_mass;i++) + if (mass[i]->nbr==GetInt(argv[1])) // pointer to mass1 + // we found mass1 + mass1 = mass[i]; + else if (mass[i]->nbr==GetInt(argv[2])) // pointer to mass2 + // ... and mass2 + mass2 = mass[i];
! if (mass1 and mass2) ! { ! link[nb_link] = new t_link; // New pointer ! link[nb_link]->Id = GetSymbol(argv[0]); // ID ! link[nb_link]->mass1 = mass1; // pointer to mass1 ! link[nb_link]->mass2 = mass2; // pointer to mass2 ! 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] ! if (link[nb_link]->longx < 0) ! link[nb_link]->longueur = -link[nb_link]->longx; ! else ! link[nb_link]->longueur = link[nb_link]->longx ;// L[0] ! link[nb_link]->nbr = id_link; // id number ! link[nb_link]->distance_old = link[nb_link]->longueur; // L[n-1] ! switch (argc) { ! case 6 : ! link[nb_link]->long_max = 32768; ! link[nb_link]->long_min = 0; ! break; ! case 7 : ! link[nb_link]->long_min = GetFloat(argv[6]); ! link[nb_link]->long_max = 32768; ! break; ! case 8 : ! link[nb_link]->long_min = GetFloat(argv[6]); ! link[nb_link]->long_max = GetFloat(argv[7]); ! break; ! } ! nb_link++; ! id_link++; ! nb_link = min ( nb_max_link -1, nb_link ); ! SetFloat((sortie[0]),id_link-1); ! SetSymbol((sortie[1]),link[nb_link-1]->Id); ! SetFloat((sortie[2]),GetInt(argv[1])); ! SetFloat((sortie[3]),GetInt(argv[2])); ! SetFloat((sortie[4]),link[nb_link-1]->K1); ! SetFloat((sortie[5]),link[nb_link-1]->D1); ! SetFloat((sortie[6]),link[nb_link-1]->D2); ! ToOutAnything(1,S_Link,7,sortie); ! } ! else ! error("link : Cannot create link: Not all masses for this link have been created yet."); }
*************** *** 534,538 **** t_int i,j; t_symbol *auxarg,*auxarg2, *auxtype; ! t_atom sortie[4]; auxtype = GetSymbol(argv[0]); auxarg = GetASymbol(argv[1]); //auxarg : & symbol, 0 else --- 550,554 ---- t_int i,j; t_symbol *auxarg,*auxarg2, *auxtype; ! t_atom sortie[3]; auxtype = GetSymbol(argv[0]); auxarg = GetASymbol(argv[1]); //auxarg : & symbol, 0 else *************** *** 541,566 **** if (auxtype == S_massesPos) // get all masses positions for (i=0; i<nb_mass; i++) ! { ! SetFloat(sortie[0],mass[i]->posX); ! ToOutAnything(0,S_massesPos,1,sortie); } else if (auxtype == S_massesForces) // get all masses forces for (i=0; i<nb_mass; i++) { ! SetFloat(sortie[0],mass[i]->out_forceX); ! ToOutAnything(0,S_massesForces,1,sortie); } else if (auxtype == S_linksPos) // get all links positions for (i=0; i<nb_link; i++) { ! SetFloat(sortie[0],link[i]->mass1->posX); ! SetFloat(sortie[1],link[i]->mass2->posX); ! ToOutAnything(0,S_linksPos,2,sortie); } else // get all masses speeds for (i=0; i<nb_mass; i++) { ! SetFloat(sortie[0],mass[i]->speedX); ! ToOutAnything(0,S_massesSpeeds,1,sortie); } } --- 557,586 ---- if (auxtype == S_massesPos) // get all masses positions for (i=0; i<nb_mass; i++) ! { ! SetFloat(sortie[0],mass[i]->nbr); ! SetFloat(sortie[1],mass[i]->posX); ! ToOutAnything(0,S_massesPos,2,sortie); } else if (auxtype == S_massesForces) // get all masses forces for (i=0; i<nb_mass; i++) { ! SetFloat(sortie[0],mass[i]->nbr); ! SetFloat(sortie[1],mass[i]->out_forceX); ! ToOutAnything(0,S_massesForces,2,sortie); } else if (auxtype == S_linksPos) // get all links positions for (i=0; i<nb_link; i++) { ! SetFloat(sortie[0],link[i]->nbr); ! SetFloat(sortie[1],link[i]->mass1->posX); ! SetFloat(sortie[2],link[i]->mass2->posX); ! ToOutAnything(0,S_linksPos,3,sortie); } else // get all masses speeds for (i=0; i<nb_mass; i++) { ! SetFloat(sortie[0],mass[i]->nbr); ! SetFloat(sortie[1],mass[i]->speedX); ! ToOutAnything(0,S_massesSpeeds,2,sortie); } } *************** *** 573,578 **** if (mass[i]->nbr==GetInt(argv[j])) { ! SetFloat(sortie[0],mass[i]->posX); ! ToOutAnything(0,S_massesPosNo,1,sortie); } } --- 593,599 ---- if (mass[i]->nbr==GetInt(argv[j])) { ! SetFloat(sortie[0],mass[i]->nbr); ! SetFloat(sortie[1],mass[i]->posX); ! ToOutAnything(0,S_massesPosNo,2,sortie); } } *************** *** 586,591 **** if (auxarg2==mass[i]->Id) { ! SetFloat(sortie[0],mass[i]->posX); ! ToOutAnything(0,S_massesPosId,1,sortie); } } --- 607,613 ---- if (auxarg2==mass[i]->Id) { ! SetSymbol(sortie[0],mass[i]->Id); ! SetFloat(sortie[1],mass[i]->posX); ! ToOutAnything(0,S_massesPosId,2,sortie); } } *************** *** 601,606 **** if (mass[i]->nbr==GetInt(argv[j])) { ! SetFloat(sortie[0],mass[i]->out_forceX); ! ToOutAnything(0,S_massesForcesNo,1,sortie); } } --- 623,629 ---- if (mass[i]->nbr==GetInt(argv[j])) { ! SetFloat(sortie[0],mass[i]->nbr); ! SetFloat(sortie[1],mass[i]->out_forceX); ! ToOutAnything(0,S_massesForcesNo,2,sortie); } } *************** *** 614,619 **** if (auxarg2==mass[i]->Id) { ! SetFloat(sortie[0],mass[i]->out_forceX); ! ToOutAnything(0,S_massesForcesId,1,sortie); } } --- 637,643 ---- if (auxarg2==mass[i]->Id) { ! SetSymbol(sortie[0],mass[i]->Id); ! SetFloat(sortie[1],mass[i]->out_forceX); ! ToOutAnything(0,S_massesForcesId,2,sortie); } } *************** *** 629,635 **** if (link[i]->nbr==GetInt(argv[j])) { ! SetFloat(sortie[0],link[i]->mass1->posX); ! SetFloat(sortie[1],link[i]->mass2->posX); ! ToOutAnything(0,S_linksPosNo,2,sortie); } } --- 653,660 ---- if (link[i]->nbr==GetInt(argv[j])) { ! SetFloat(sortie[0],link[i]->nbr); ! SetFloat(sortie[1],link[i]->mass1->posX); ! SetFloat(sortie[2],link[i]->mass2->posX); ! ToOutAnything(0,S_linksPosNo,3,sortie); } } *************** *** 643,649 **** if (auxarg2==link[i]->Id) { ! SetFloat(sortie[0],link[i]->mass1->posX); ! SetFloat(sortie[1],link[i]->mass2->posX); ! ToOutAnything(0,S_linksPosId,2,sortie); } } --- 668,675 ---- if (auxarg2==link[i]->Id) { ! SetSymbol(sortie[0],link[i]->Id); ! SetFloat(sortie[1],link[i]->mass1->posX); ! SetFloat(sortie[2],link[i]->mass2->posX); ! ToOutAnything(0,S_linksPosId,3,sortie); } } *************** *** 659,664 **** if (mass[i]->nbr==GetInt(argv[j])) { ! SetFloat(sortie[0],mass[i]->speedX); ! ToOutAnything(0,S_massesSpeedsNo,1,sortie); } } --- 685,691 ---- if (mass[i]->nbr==GetInt(argv[j])) { ! SetFloat(sortie[0],mass[i]->nbr); ! SetFloat(sortie[1],mass[i]->speedX); ! ToOutAnything(0,S_massesSpeedsNo,2,sortie); } } *************** *** 672,677 **** if (auxarg2==mass[i]->Id) { ! SetFloat(sortie[0],mass[i]->speedX); ! ToOutAnything(0,S_massesSpeedsId,1,sortie); } } --- 699,705 ---- if (auxarg2==mass[i]->Id) { ! SetSymbol(sortie[0],mass[i]->Id); ! SetFloat(sortie[1],mass[i]->speedX); ! ToOutAnything(0,S_massesSpeedsId,2,sortie); } }
Index: 03_msdwave.pd =================================================================== RCS file: /cvsroot/pure-data/externals/nusmuk/msd/03_msdwave.pd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** 03_msdwave.pd 25 Apr 2005 16:18:38 -0000 1.1 --- 03_msdwave.pd 26 Apr 2005 16:10:06 -0000 1.2 *************** *** 18,22 **** #X obj 127 136 t b f; #X obj 127 57 unpack f f f; ! #X obj 45 283 cuboid 0.065 0.065 0.07; #X connect 0 0 6 0; #X connect 1 0 7 0; --- 18,22 ---- #X obj 127 136 t b f; #X obj 127 57 unpack f f f; ! #X obj 48 283 cuboid 0.065 0.065 0.07; #X connect 0 0 6 0; #X connect 1 0 7 0; *************** *** 35,51 **** #X text 418 114 Filet abstraction : x0 y0 stepx stepy ny nx; #X obj 454 464 msd -------------; - #X obj 568 488 print msd; #X obj 33 497 msd2D --------------------------------; - #X obj 294 522 print msd2D; #X obj 305 254 route mass; #X msg 305 275 mass msd1 $1 $2 $5; #X obj 145 253 route mass; #X msg 145 274 mass msd2 $1 $2 $3 $4; ! #X obj 33 539 route massesPos; #X msg 33 343 bang , get massesPos; #X obj 33 321 t b b; #X obj 265 600 pack f f f; - #X obj 33 561 unpack f f; - #X obj 33 583 t f b; #N canvas 0 0 450 300 getmasses 0; #X obj 84 33 inlet; --- 35,47 ---- #X text 418 114 Filet abstraction : x0 y0 stepx stepy ny nx; #X obj 454 464 msd -------------; #X obj 33 497 msd2D --------------------------------; #X obj 305 254 route mass; #X msg 305 275 mass msd1 $1 $2 $5; #X obj 145 253 route mass; #X msg 145 274 mass msd2 $1 $2 $3 $4; ! #X obj 33 517 route massesPos; #X msg 33 343 bang , get massesPos; #X obj 33 321 t b b; #X obj 265 600 pack f f f; #N canvas 0 0 450 300 getmasses 0; #X obj 84 33 inlet; *************** *** 67,72 **** #X connect 6 0 2 1; #X connect 8 0 2 1; ! #X restore 63 698 pd getmasses; ! #X obj 454 507 route massesPosNo; #X msg 63 718 get massesPos $1; #X obj 602 334 rotateXYZ; --- 63,68 ---- #X connect 6 0 2 1; #X connect 8 0 2 1; ! #X restore 72 657 pd getmasses; ! #X obj 454 488 route massesPosNo; #X msg 63 718 get massesPos $1; #X obj 602 334 rotateXYZ; *************** *** 95,99 **** #X msg 670 605 posX 39 $1; #X msg 689 625 posX 799 $1; ! #X msg 708 645 posX 760 $1; #X text 734 508 Move corners to send a wave!; #X text 194 703 Each time a mass2D position is send , the corresponding --- 91,95 ---- #X msg 670 605 posX 39 $1; #X msg 689 625 posX 799 $1; ! #X msg 707 645 posX 760 $1; #X text 734 508 Move corners to send a wave!; #X text 194 703 Each time a mass2D position is send , the corresponding *************** *** 107,169 **** #X text 31 455 The 2D model is just here to help display masses and test synchronization between msd objects; #X connect 0 0 12 0; #X connect 2 0 1 0; ! #X connect 3 0 31 0; #X connect 5 0 18 0; - #X connect 5 0 20 0; #X connect 6 0 12 0; #X connect 7 0 5 0; ! #X connect 8 0 24 0; ! #X connect 10 0 28 1; ! #X connect 10 0 45 1; ! #X connect 12 0 42 0; ! #X connect 12 0 43 0; ! #X connect 12 1 46 0; ! #X connect 12 2 45 0; #X connect 12 3 7 0; #X connect 12 3 10 0; ! #X connect 14 0 29 0; ! #X connect 14 1 15 0; ! #X connect 16 0 22 0; ! #X connect 16 1 17 0; #X connect 18 0 19 0; ! #X connect 18 1 14 0; ! #X connect 19 0 14 0; ! #X connect 20 0 21 0; ! #X connect 20 1 16 0; ! #X connect 21 0 16 0; ! #X connect 22 0 26 0; ! #X connect 23 0 16 0; ! #X connect 24 0 23 0; ! #X connect 24 1 14 0; ! #X connect 25 0 9 0; ! #X connect 26 0 27 0; ! #X connect 26 1 25 1; ! #X connect 27 0 25 0; ! #X connect 27 1 28 0; ! #X connect 28 0 30 0; ! #X connect 29 0 25 2; ! #X connect 30 0 14 0; ! #X connect 31 0 4 0; ! #X connect 32 0 36 0; ! #X connect 33 0 48 0; ! #X connect 34 0 49 0; ! #X connect 35 0 50 0; ! #X connect 36 0 14 0; ! #X connect 37 0 31 1; ! #X connect 38 0 1 0; ! #X connect 39 0 1 0; ! #X connect 40 0 31 2; ! #X connect 41 0 1 0; ! #X connect 41 0 44 0; ! #X connect 42 0 16 0; ! #X connect 43 0 14 0; ! #X connect 44 0 39 0; ! #X connect 44 0 40 0; ! #X connect 44 0 37 0; ! #X connect 45 0 5 0; ! #X connect 46 0 5 0; ! #X connect 47 0 1 0; ! #X connect 48 0 14 0; ! #X connect 49 0 14 0; ! #X connect 50 0 14 0; --- 103,169 ---- #X text 31 455 The 2D model is just here to help display masses and test synchronization between msd objects; + #X obj 33 537 unpack f f f; + #X obj 443 546 unpack f f; + #X obj 173 598 f; + #X obj 33 574 t b f; #X connect 0 0 12 0; #X connect 2 0 1 0; ! #X connect 3 0 27 0; ! #X connect 5 0 16 0; #X connect 5 0 18 0; #X connect 6 0 12 0; #X connect 7 0 5 0; ! #X connect 8 0 22 0; ! #X connect 10 0 24 1; ! #X connect 10 0 41 1; ! #X connect 12 0 38 0; ! #X connect 12 0 39 0; ! #X connect 12 1 42 0; ! #X connect 12 2 41 0; #X connect 12 3 7 0; #X connect 12 3 10 0; ! #X connect 14 0 25 0; ! #X connect 15 0 20 0; ! #X connect 16 0 17 0; ! #X connect 16 1 14 0; ! #X connect 17 0 14 0; #X connect 18 0 19 0; ! #X connect 18 1 15 0; ! #X connect 19 0 15 0; ! #X connect 20 0 55 0; ! #X connect 21 0 15 0; ! #X connect 22 0 21 0; ! #X connect 22 1 14 0; ! #X connect 23 0 9 0; ! #X connect 25 0 56 0; ! #X connect 26 0 14 0; ! #X connect 27 0 4 0; ! #X connect 28 0 32 0; ! #X connect 29 0 44 0; ! #X connect 30 0 45 0; ! #X connect 31 0 46 0; ! #X connect 32 0 14 0; ! #X connect 33 0 27 1; ! #X connect 34 0 1 0; ! #X connect 35 0 1 0; ! #X connect 36 0 27 2; ! #X connect 37 0 1 0; ! #X connect 37 0 40 0; ! #X connect 38 0 15 0; ! #X connect 39 0 14 0; ! #X connect 40 0 35 0; ! #X connect 40 0 36 0; ! #X connect 40 0 33 0; ! #X connect 41 0 5 0; ! #X connect 42 0 5 0; ! #X connect 43 0 1 0; ! #X connect 44 0 14 0; ! #X connect 45 0 14 0; ! #X connect 46 0 14 0; ! #X connect 55 0 58 0; ! #X connect 55 1 57 1; ! #X connect 55 2 23 1; ! #X connect 56 1 23 2; ! #X connect 57 0 23 0; ! #X connect 58 0 57 0; ! #X connect 58 1 26 0;
Index: 02_imsdtest.pd =================================================================== RCS file: /cvsroot/pure-data/externals/nusmuk/msd/02_imsdtest.pd,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** 02_imsdtest.pd 21 Apr 2005 14:28:53 -0000 1.2 --- 02_imsdtest.pd 26 Apr 2005 16:10:06 -0000 1.3 *************** *** 22,29 **** #X obj 46 380 cnv 15 700 90 empty empty empty 20 12 0 14 -262131 -66577 0; - #X msg 176 385 setD souple 0.01; - #X msg 66 384 setK souple 1; - #X msg 176 407 setD souple 1; - #X msg 66 406 setK souple 2; #X text 455 399 SET RIGIDITY AND VISCOSITY OF LINKS; #X text 455 438 ADD FORCE ON ALL MOBILE MASSES; --- 22,25 ---- *************** *** 32,45 **** 0; #X obj 88 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 6249 1; #X obj 111 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 0 1; #X obj 66 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 6860 1; #X msg 52 736 posX fix $1; #X obj 156 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 0 1; #X obj 134 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 0 1; #X text 199 638 MOVE FIRST SLIDER; #X text 182 662 TO MOVE THE FIXED MASS; --- 28,41 ---- 0; #X obj 88 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 12166 1; #X obj 111 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 7166 1; #X obj 66 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 9960 1; #X msg 52 736 posX fix $1; #X obj 156 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 2370 1; #X obj 134 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 ! -1 -1 12700 1; #X text 199 638 MOVE FIRST SLIDER; #X text 182 662 TO MOVE THE FIXED MASS; *************** *** 52,63 **** #X obj 52 545 unpack f f f f f; #X text 490 126 CREATION : 5 MASSES , 1 iLINK; ! #X msg 184 223 iLink inter fix mob 10 2.5 0.5 5 20; ! #X connect 0 0 35 0; ! #X connect 2 0 37 0; #X connect 2 1 1 0; #X connect 3 0 6 0; ! #X connect 6 0 38 0; #X connect 9 0 2 0; ! #X connect 10 0 35 0; #X connect 11 0 9 0; #X connect 12 0 9 0; --- 48,63 ---- #X obj 52 545 unpack f f f f f; #X text 490 126 CREATION : 5 MASSES , 1 iLINK; ! #X msg 66 384 setK inter 1; ! #X msg 66 406 setK inter 2; ! #X msg 176 385 setD inter 0.01; ! #X msg 176 407 setD inter 1; ! #X msg 184 223 iLink inter fix mob 10 2.5 0.5 5; ! #X connect 0 0 31 0; ! #X connect 2 0 33 0; #X connect 2 1 1 0; #X connect 3 0 6 0; ! #X connect 6 0 34 0; #X connect 9 0 2 0; ! #X connect 10 0 31 0; #X connect 11 0 9 0; #X connect 12 0 9 0; *************** *** 65,92 **** #X connect 14 0 9 0; #X connect 15 0 12 0; ! #X connect 17 0 2 0; ! #X connect 18 0 2 0; ! #X connect 19 0 2 0; ! #X connect 20 0 2 0; ! #X connect 23 0 3 0; ! #X connect 27 0 28 0; ! #X connect 28 0 2 0; ! #X connect 33 0 2 0; #X connect 34 0 2 0; ! #X connect 35 0 33 0; ! #X connect 35 0 3 0; ! #X connect 35 1 23 0; ! #X connect 35 1 41 0; ! #X connect 35 2 13 0; ! #X connect 35 3 15 0; ! #X connect 35 4 14 0; ! #X connect 35 5 11 0; ! #X connect 37 0 39 0; ! #X connect 37 1 1 0; #X connect 38 0 2 0; ! #X connect 39 0 27 0; ! #X connect 39 1 25 0; ! #X connect 39 2 26 0; ! #X connect 39 3 30 0; ! #X connect 39 4 29 0; #X connect 41 0 9 0; --- 65,91 ---- #X connect 14 0 9 0; #X connect 15 0 12 0; ! #X connect 19 0 3 0; ! #X connect 23 0 24 0; ! #X connect 24 0 2 0; ! #X connect 29 0 2 0; ! #X connect 30 0 2 0; ! #X connect 31 0 3 0; ! #X connect 31 1 19 0; ! #X connect 31 1 41 0; ! #X connect 31 2 13 0; ! #X connect 31 3 15 0; ! #X connect 31 4 14 0; ! #X connect 31 5 11 0; ! #X connect 33 0 35 0; ! #X connect 33 1 1 0; #X connect 34 0 2 0; ! #X connect 35 0 23 0; ! #X connect 35 1 21 0; ! #X connect 35 2 22 0; ! #X connect 35 3 26 0; ! #X connect 35 4 25 0; ! #X connect 37 0 2 0; #X connect 38 0 2 0; ! #X connect 39 0 2 0; ! #X connect 40 0 2 0; #X connect 41 0 9 0;