[PD-cvs] externals/nusmuk/msd help-msd.pd,1.1,1.2 main.cpp,1.2,1.3
Nicolas Montgermont
nimon at users.sourceforge.net
Wed Apr 20 17:33:16 CEST 2005
Update of /cvsroot/pure-data/externals/nusmuk/msd
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30071/msd
Modified Files:
help-msd.pd main.cpp
Log Message:
MSD Version 0.02
Index: main.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/nusmuk/msd/main.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** main.cpp 15 Apr 2005 18:13:39 -0000 1.2
--- main.cpp 20 Apr 2005 15:33:14 -0000 1.3
***************
*** 102,106 ****
// --------------------------------------------------------------- RESET
!
void m_reset()
{
--- 102,106 ----
// --------------------------------------------------------------- RESET
! // ----------------------------------------------------------------------
void m_reset()
{
***************
*** 122,125 ****
--- 122,126 ----
// -------------------------------------------------------------- COMPUTE
+ // -----------------------------------------------------------------------
void m_bang()
***************
*** 131,145 ****
for (i=0; i<nb_link; i++) {
// compute link forces
! distance = link[i]->mass1->posX-link[i]->mass2->posX;
! 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)
if (distance != 0) {
! Fx = F * (link[i]->mass1->posX - link[i]->mass2->posX)/distance;
}
! 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]->distance_old = distance;
}
--- 132,146 ----
for (i=0; i<nb_link; i++) {
// compute link forces
! distance = link[i]->mass1->posX-link[i]->mass2->posX; // L[n] = x1 - x2
! 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; // Fx = F * Lx[n]/L[n]
}
! 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]->distance_old = distance; // L[n-1] = L[n]
}
***************
*** 147,154 ****
// 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
}
--- 148,155 ----
// 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; // 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]
}
***************
*** 156,165 ****
// clear forces
mass[i]->out_forceX = mass[i]->forceX;
! mass[i]->forceX = 0;
}
}
// -------------------------------------------------------------- MASSES
!
void m_mass(int argc,t_atom *argv)
// add a mass
--- 157,166 ----
// clear forces
mass[i]->out_forceX = mass[i]->forceX;
! mass[i]->forceX = 0; // Fx[n] = 0
}
}
// -------------------------------------------------------------- MASSES
! // ----------------------------------------------------------------------
void m_mass(int argc,t_atom *argv)
// add a mass
***************
*** 169,184 ****
t_float M;
! mass[nb_mass] = new t_mass; // new pointer
! mass[nb_mass]->Id = GetSymbol(argv[0]); // ID
mass[nb_mass]->mobile = GetInt(argv[1]); // mobile
if (GetFloat(argv[2])==0)
M=1;
else M = GetFloat(argv[2]);
! mass[nb_mass]->invM = 1/(M); // invM
! mass[nb_mass]->speedX = 0; // vx
! mass[nb_mass]->posX = GetFloat(argv[3]); // x
! mass[nb_mass]->posX2 = GetFloat(argv[3]); // x
! mass[nb_mass]->forceX = 0; // Fx
! mass[nb_mass]->nbr = id_mass; // id_nbr
nb_mass++ ;
id_mass++;
--- 170,185 ----
t_float M;
! 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;
else M = GetFloat(argv[2]);
! mass[nb_mass]->invM = 1/(M); // 1/M
! mass[nb_mass]->speedX = 0; // vx[n]
! mass[nb_mass]->posX = GetFloat(argv[3]); // x[n]
! mass[nb_mass]->posX2 = GetFloat(argv[3]); // x[n-1]
! mass[nb_mass]->forceX = 0; // Fx[n]
! mass[nb_mass]->nbr = id_mass; // id number
nb_mass++ ;
id_mass++;
***************
*** 253,256 ****
--- 254,259 ----
t_atom sortie[5], aux[nb_link];
+
+ // Delete all associated links
for (i=0; i<nb_link;i++) {
if (link[i]->mass1->nbr == GetAInt(argv[0]) || link[i]->mass2->nbr == GetAInt(argv[0])) {
***************
*** 262,266 ****
for (i=0; i<nb_link_delete;i++)
m_delete_link(1,&aux[i]);
!
for (i=0; i<nb_mass;i++)
if (mass[i]->nbr == GetAInt(argv[0])) {
--- 265,270 ----
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])) {
***************
*** 271,275 ****
SetFloat((sortie[4]),mass[i]->posX);
delete mass[i];
! mass[i] = mass[nb_mass-1];
nb_mass--;
ToOutAnything(1,S_Mass_deleted,5,sortie);
--- 275,279 ----
SetFloat((sortie[4]),mass[i]->posX);
delete mass[i];
! mass[i] = mass[nb_mass-1]; // copy last mass instead
nb_mass--;
ToOutAnything(1,S_Mass_deleted,5,sortie);
***************
*** 282,286 ****
void m_Xmax(int argc,t_atom *argv)
{
! // set damping of link(s) named Id
Xmax = GetFloat(argv[0]);
}
--- 286,290 ----
void m_Xmax(int argc,t_atom *argv)
{
! // set X max
Xmax = GetFloat(argv[0]);
}
***************
*** 288,296 ****
void m_Xmin(int argc,t_atom *argv)
{
! // set damping of link(s) named Id
Xmin = GetFloat(argv[0]);
}
// -------------------------------------------------------------- LINKS
void m_link(int argc,t_atom *argv)
--- 292,301 ----
void m_Xmin(int argc,t_atom *argv)
{
! // set X min
Xmin = GetFloat(argv[0]);
}
// -------------------------------------------------------------- LINKS
+ // ---------------------------------------------------------------------
void m_link(int argc,t_atom *argv)
***************
*** 301,318 ****
t_int i;
! link[nb_link] = new t_link;
! link[nb_link]->Id = GetSymbol(argv[0]);
for (i=0; i<nb_mass;i++)
! if (mass[i]->nbr==GetAInt(argv[1]))
link[nb_link]->mass1 = mass[i];
! else if(mass[i]->nbr==GetAInt(argv[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]->longueur = link[nb_link]->longx ;
! link[nb_link]->nbr = id_link;
! link[nb_link]->distance_old = link[nb_link]->longueur;
nb_link++;
id_link++;
--- 306,323 ----
t_int i;
! 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]
! 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]
nb_link++;
id_link++;
***************
*** 357,361 ****
SetFloat((arglist[1]),mass[imass1[i]]->nbr);
SetFloat((arglist[2]),mass[imass2[j]]->nbr);
! SetFloat((arglist[3]),GetInt(argv[3]));
SetFloat((arglist[4]),GetFloat(argv[4]));
SetFloat((arglist[5]),GetFloat(argv[5]));
--- 362,366 ----
SetFloat((arglist[1]),mass[imass1[i]]->nbr);
SetFloat((arglist[2]),mass[imass2[j]]->nbr);
! SetFloat((arglist[3]),GetFloat(argv[3]));
SetFloat((arglist[4]),GetFloat(argv[4]));
SetFloat((arglist[5]),GetFloat(argv[5]));
***************
*** 419,423 ****
SetFloat((sortie[6]),link[i]->D2);
delete link[i];
! link[i]=link[nb_link-1];
nb_link--;
ToOutAnything(1,S_Link_deleted,7,sortie);
--- 424,428 ----
SetFloat((sortie[6]),link[i]->D2);
delete link[i];
! link[i]=link[nb_link-1]; // copy last link instead
nb_link--;
ToOutAnything(1,S_Link_deleted,7,sortie);
***************
*** 428,431 ****
--- 433,437 ----
// -------------------------------------------------------------- GET
+ // -------------------------------------------------------------------
void m_get(int argc,t_atom *argv)
***************
*** 596,600 ****
void m_force_dumpl()
! // List of masses positions on first outlet
{
t_atom sortie[nb_mass];
--- 602,606 ----
void m_force_dumpl()
! // List of masses forces on first outlet
{
t_atom sortie[nb_mass];
***************
*** 608,612 ****
void m_info_dumpl()
! // List of masses positions on first outlet
{
t_atom sortie[7];
--- 614,618 ----
void m_info_dumpl()
! // List of masses and links infos on first outlet
{
t_atom sortie[7];
***************
*** 637,650 ****
// -------------------------------------------------------------- PROTECTED VARIABLES
! t_link * link[nb_max_link];
! t_mass * mass[nb_max_mass];
! t_float Xmin, Xmax, Ymin, Ymax;
int nb_link, nb_mass, id_mass, id_link;
// -------------------------------------------------------------- SETUP
private:
const static t_symbol *S_Reset;
const static t_symbol *S_Mass;
--- 643,659 ----
// -------------------------------------------------------------- PROTECTED VARIABLES
+ // -----------------------------------------------------------------------------------
! t_link * link[nb_max_link]; // Pointer table on links
! t_mass * mass[nb_max_mass]; // Pointer table on masses
! t_float Xmin, Xmax; // Limit values
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;
***************
*** 722,726 ****
FLEXT_CALLBACK_V(m_delete_mass)
};
!
const t_symbol *msd::S_Reset = MakeSymbol("Reset");
--- 731,736 ----
FLEXT_CALLBACK_V(m_delete_mass)
};
! // -------------------------------------------------------------- STATIC VARIABLES
! // -------------------------------------------------------------------------------
const t_symbol *msd::S_Reset = MakeSymbol("Reset");
Index: help-msd.pd
===================================================================
RCS file: /cvsroot/pure-data/externals/nusmuk/msd/help-msd.pd,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** help-msd.pd 12 Apr 2005 18:09:20 -0000 1.1
--- help-msd.pd 20 Apr 2005 15:33:14 -0000 1.2
***************
*** 1,76 ****
! #N canvas 0 0 794 877 10;
#X obj 33 821 msd;
! #X obj 62 14 cnv 15 610 305 empty empty CREATION 20 12 0 14 -262131
-66577 0;
! #X msg 79 43 reset;
! #X text 249 74 Add a mass;
! #X text 335 75 \$1 : Id (symbol);
! #X text 334 95 \$2 : fixed or mobile (0/1);
! #X text 334 113 \$3 : mass;
! #X text 334 151 \$1 : Id (symbol);
! #X text 246 151 Add a link;
! #X text 333 171 \$2 : creation No of mass1;
! #X text 333 189 \$3 : creation No of mass2;
! #X text 332 207 \$4 : rigidity;
! #X text 251 44 Delete all masses and links;
! #X text 332 225 \$5 : viscosity;
! #X text 332 242 \$6 : damping;
! #X obj 62 324 cnv 15 610 60 empty empty COMPUTATION 20 12 0 14 -261689
-66577 0;
! #X msg 82 353 bang;
! #X text 235 353 Compute new masses positions;
! #X obj 61 388 cnv 15 610 220 empty empty DYNAMIC_SETTING 20 12 0 14
-262131 -66577 0;
! #X msg 169 410 setD \$1 \$2;
! #X text 354 428 \$1 : Id (symbol);
! #X text 354 446 \$2 : New value;
! #X msg 87 410 setK \$1 \$2;
! #X text 350 482 \$1 : Id (symbol);
! #X text 350 500 \$2 : New value;
! #X text 348 539 \$1 : Id (symbol);
! #X text 348 557 \$2 : New value;
! #X msg 87 462 posX \$1 \$2;
! #X text 350 464 Set position of mass(es);
! #X text 347 522 Add force on mass(es);
! #X msg 85 521 forceX \$1 \$2;
! #X msg 255 410 setD2 \$1 \$2;
! #X text 354 410 Set rigidity \, viscosity or damping of link(s);
! #X obj 60 617 cnv 15 610 198 empty empty GET_ATTRIBUTES 20 12 0 14
-261689 -66577 0;
! #X msg 146 644 massePosL;
! #X msg 146 672 masseForcesL;
! #X text 247 644 output all masses positions in a list on outlet No
1;
! #X text 246 673 output all masses forces in a list on outlet No 1;
! #X msg 145 710 get \$1 \$2;
! #X text 248 711 Get specific attribute;
! #X text 248 736 \$1 : Attribute type ( massesPos / massesSpeeds / massesForces
/ linksPos );
! #X text 248 773 \$2 : Id (symbol or creations numbers);
! #X text 334 131 \$4 : position;
! #X msg 79 74 mass \$1 \$2 \$3 \$4;
! #X msg 76 151 link \$1 \$2 \$3 \$4 \$5 \$6;
! #X msg 75 258 deleteMass \$1;
! #X text 240 260 Delete a mass and associated links;
! #X text 330 277 \$1 : Creation No of mass;
! #X msg 74 294 deleteLink \$1;
! #X text 239 296 Delete a link;
! #X text 340 296 \$1 : Creation No of link;
! #X msg 143 793 infosL;
! #X text 246 793 Get infos on all masses and links on outlet No 2;
! #X msg 84 573 Xmin \$1 \, Xmax \$1;
! #X text 347 576 Set minimimum and maximum X of masses;
! #X text 347 593 \$1 : Value;
#X connect 2 0 0 0;
#X connect 16 0 0 0;
#X connect 22 0 0 0;
! #X connect 27 0 0 0;
#X connect 30 0 0 0;
! #X connect 34 0 0 0;
#X connect 35 0 0 0;
- #X connect 38 0 0 0;
- #X connect 43 0 0 0;
#X connect 44 0 0 0;
! #X connect 45 0 0 0;
! #X connect 48 0 0 0;
! #X connect 51 0 0 0;
--- 1,170 ----
! #N canvas 367 274 570 449 10;
! #N canvas 271 52 742 843 masses 1;
#X obj 33 821 msd;
! #X obj 62 154 cnv 15 610 180 empty empty CREATION 20 12 0 14 -262131
-66577 0;
! #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 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 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 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 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 249 773 \$2 : Id (symbol or creations numbers);
! #X msg 79 214 mass \$1 \$2 \$3 \$4;
! #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 msg 84 535 Xmin \$1 \, Xmax \$1;
! #X text 347 538 Set minimimum and maximum X of masses;
! #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 574 setMobile \$1 \, setFixed \$1;
! #X text 345 578 Change mobile parameter;
! #X text 345 594 \$1 : Creation No of mass;
! #X text 334 271 \$4 : initial position;
#X connect 2 0 0 0;
+ #X connect 9 0 0 0;
#X connect 16 0 0 0;
+ #X connect 19 0 0 0;
+ #X connect 21 0 0 0;
#X connect 22 0 0 0;
! #X connect 25 0 0 0;
! #X connect 29 0 0 0;
#X connect 30 0 0 0;
! #X connect 33 0 0 0;
#X connect 35 0 0 0;
#X connect 44 0 0 0;
! #X restore 281 323 pd masses;
! #N canvas 222 83 808 841 links 0;
! #X obj 33 821 msd;
! #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 connect 2 0 0 0;
! #X connect 15 0 0 0;
! #X connect 19 0 0 0;
! #X connect 23 0 0 0;
! #X connect 24 0 0 0;
! #X connect 27 0 0 0;
! #X connect 29 0 0 0;
! #X restore 283 353 pd links;
! #X text 135 323 HELP on masses --->;
! #X text 134 354 HELP on links --->;
! #X text 154 34 MSD : mass - spring - damper model;
! #X text 75 79 MSD is the 1D object of the msd objects collection.;
! #X text 73 128 There are 4 types of messages for msd :;
! #X text 74 92 It is designed to implement particules physical model
! in PD.The model is based on two elements type : mass and link.;
! #X obj 73 143 cnv 15 420 30 empty empty empty 20 12 0 14 -262131 -66577
! 0;
! #X obj 73 176 cnv 15 420 30 empty empty empty 20 12 0 14 -261689 -66577
! 0;
! #X obj 73 209 cnv 15 420 30 empty empty empty 20 12 0 14 -262131 -66577
! 0;
! #X obj 73 242 cnv 15 420 30 empty empty empty 20 12 0 14 -261689 -66577
! 0;
! #X text 76 150 CREATION : To create the model masses and links.;
! #X text 76 215 DYNAMIC SETTING : To set the model parameters dynamically.
! ;
! #X text 76 248 ATTRIBUTES : To get the model parameters.;
! #X text 76 177 COMPUTATION : To compute the new model state based on
! previous instant.;
More information about the Pd-cvs
mailing list