aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--msd/01_msdtest.pd78
-rw-r--r--msd/02_msdstring.pd80
-rw-r--r--msd/03_msdwave.pd166
-rw-r--r--msd2D/01_msd2Dtest.pd48
-rw-r--r--msd2D/06_msd2Dgravit.pd125
-rw-r--r--msd3D/01_msd3Dtest.pd351
-rw-r--r--msd3D/02_msd3Dperf.pd187
-rw-r--r--msd3D/03_msd3Dmemb.pd229
-rw-r--r--msd3D/04_msd3Dfilet.pd158
-rw-r--r--msd3D/05_msd3Dvline.pd224
10 files changed, 871 insertions, 775 deletions
diff --git a/msd/01_msdtest.pd b/msd/01_msdtest.pd
index 2fedeee..49922e9 100644
--- a/msd/01_msdtest.pd
+++ b/msd/01_msdtest.pd
@@ -1,6 +1,6 @@
#N canvas 392 22 616 594 10;
#X obj 20 33 loadbang;
-#X obj 366 197 print msd;
+#X obj 382 197 print msd;
#X obj 309 58 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
;
#X text 329 56 ON / OFF;
@@ -14,27 +14,21 @@
#X msg 128 394 setD souple 1;
#X msg 18 393 setK souple 2;
#X obj 331 392 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -262144
--1 -1 5250 1;
+-1 -1 7025 1;
#X obj 354 392 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -262144
--1 -1 5250 1;
+-1 -1 7484 1;
#X obj 308 392 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -262144
--1 -1 5250 1;
+-1 -1 6450 1;
#X msg 308 538 posX fix \$1;
#X obj 401 392 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -262144
--1 -1 5250 1;
+-1 -1 7901 1;
#X obj 377 392 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -262144
--1 -1 5250 1;
+-1 -1 7771 1;
#X msg 20 256 0 1 \, 1 2 \, 2 3 \, 3 4;
#X obj 308 347 unpack f f f f f;
#X obj 308 325 route massesPosL;
#X msg 309 103 bang \, massesPosL;
#X msg 20 278 link souple \$1 \$2 10 10;
-#X obj 83 314 s msdin;
-#X obj 319 138 r msdin;
-#X obj 309 197 s msdout;
-#X obj 308 302 r msdout;
-#X obj 308 560 s msdin;
-#X obj 18 421 s msdin;
#X obj 309 167 msd;
#X obj 309 31 loadbang;
#X obj 20 77 t b b b b b;
@@ -47,24 +41,30 @@
#X text 429 453 to move the fixed mass;
#X msg 19 503 forceX mob 300;
#X msg 19 479 forceX mob -300;
-#X obj 19 530 s msdin;
#X text 307 279 display and interaction;
#X msg 51 201 mass mob 1 100 50;
#X msg 51 159 4;
#X obj 51 180 until;
#X msg 67 139 mass fix 0 100 50;
-#X connect 0 0 31 0;
+#X obj 83 314 s \$0-msdin;
+#X obj 18 421 s \$0-msdin;
+#X obj 19 530 s \$0-msdin;
+#X obj 319 138 r \$0-msdin;
+#X obj 309 197 s \$0-msdout;
+#X obj 308 302 r \$0-msdout;
+#X obj 308 560 s \$0-msdin;
+#X connect 0 0 25 0;
#X connect 2 0 4 0;
#X connect 4 0 21 0;
-#X connect 5 0 31 0;
-#X connect 6 0 23 0;
-#X connect 7 0 23 0;
-#X connect 8 0 28 0;
-#X connect 9 0 28 0;
-#X connect 10 0 28 0;
-#X connect 11 0 28 0;
+#X connect 5 0 25 0;
+#X connect 6 0 40 0;
+#X connect 7 0 40 0;
+#X connect 8 0 41 0;
+#X connect 9 0 41 0;
+#X connect 10 0 41 0;
+#X connect 11 0 41 0;
#X connect 14 0 15 0;
-#X connect 15 0 27 0;
+#X connect 15 0 46 0;
#X connect 18 0 22 0;
#X connect 19 0 14 0;
#X connect 19 1 12 0;
@@ -72,21 +72,21 @@
#X connect 19 3 17 0;
#X connect 19 4 16 0;
#X connect 20 0 19 0;
-#X connect 21 0 29 0;
-#X connect 22 0 23 0;
-#X connect 24 0 29 0;
-#X connect 26 0 20 0;
-#X connect 29 0 25 0;
-#X connect 29 1 1 0;
-#X connect 30 0 2 0;
-#X connect 31 0 18 0;
-#X connect 31 1 7 0;
-#X connect 31 2 44 0;
-#X connect 31 3 46 0;
-#X connect 31 4 6 0;
-#X connect 39 0 41 0;
-#X connect 40 0 41 0;
+#X connect 21 0 23 0;
+#X connect 22 0 40 0;
+#X connect 23 0 44 0;
+#X connect 23 1 1 0;
+#X connect 24 0 2 0;
+#X connect 25 0 18 0;
+#X connect 25 1 7 0;
+#X connect 25 2 37 0;
+#X connect 25 3 39 0;
+#X connect 25 4 6 0;
+#X connect 33 0 42 0;
+#X connect 34 0 42 0;
+#X connect 36 0 40 0;
+#X connect 37 0 38 0;
+#X connect 38 0 36 0;
+#X connect 39 0 40 0;
#X connect 43 0 23 0;
-#X connect 44 0 45 0;
-#X connect 45 0 43 0;
-#X connect 46 0 23 0;
+#X connect 45 0 20 0;
diff --git a/msd/02_msdstring.pd b/msd/02_msdstring.pd
index f955827..b2772a0 100644
--- a/msd/02_msdstring.pd
+++ b/msd/02_msdstring.pd
@@ -2,7 +2,7 @@
#X obj 24 54 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262131 -1
-1;
#X text 49 54 reset;
-#N canvas 0 22 454 304 creation_structure 0;
+#N canvas 0 22 610 333 creation_structure 0;
#X obj 52 15 loadbang;
#X obj 135 20 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262131 -1
-1;
@@ -80,26 +80,25 @@
#X obj 135 42 t b b b b;
#X text 252 82 CREATION : 2 masses fixes (fix) \, 80 mobiles (corde)
\, 80 liens (souple) \, 78 tLink (D2);
-#X obj 135 160 s msdin;
#X msg 135 132 Xmax 100 \, Xmin -100;
#X obj 247 23 inlet;
#X obj 121 213 loadbang;
#X obj 121 237 s load;
+#X obj 135 160 s \$0-msdin;
#X connect 0 0 6 0;
#X connect 1 0 6 0;
-#X connect 2 0 8 0;
-#X connect 4 0 8 0;
-#X connect 5 0 8 0;
-#X connect 6 0 9 0;
+#X connect 2 0 12 0;
+#X connect 4 0 12 0;
+#X connect 5 0 12 0;
+#X connect 6 0 8 0;
#X connect 6 1 5 0;
#X connect 6 2 4 0;
#X connect 6 3 2 0;
-#X connect 9 0 8 0;
-#X connect 10 0 6 0;
-#X connect 11 0 12 0;
+#X connect 8 0 12 0;
+#X connect 9 0 6 0;
+#X connect 10 0 11 0;
#X restore 24 76 pd creation_structure;
#N canvas 508 227 516 328 compute 0;
-#X obj 274 162 print msd;
#X obj 27 30 gemhead;
#N canvas 735 244 537 479 corde 0;
#X obj 139 41 inlet;
@@ -176,7 +175,6 @@
#X obj 186 219 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 27 136 msd --------------------------------;
-#X obj 95 100 r msdin;
#X obj 27 53 t b b b b b b b;
#X obj 27 195 route massesPos massesSpeeds massesForces;
#X text 208 240 Afficher les vitesses en haut;
@@ -227,27 +225,27 @@
#X restore 215 278 pd forces;
#X msg 27 75 bang \, get massesPos \, get massesSpeeds \, get massesForces
;
-#X connect 1 0 7 0;
-#X connect 4 0 3 1;
-#X connect 5 0 8 0;
-#X connect 5 1 0 0;
-#X connect 6 0 5 0;
-#X connect 7 0 15 0;
-#X connect 7 1 5 0;
-#X connect 7 2 5 0;
-#X connect 7 3 5 0;
-#X connect 7 4 5 0;
-#X connect 7 5 5 0;
-#X connect 7 6 5 0;
-#X connect 8 0 2 0;
-#X connect 8 1 3 0;
-#X connect 8 2 14 0;
-#X connect 11 0 14 1;
-#X connect 11 0 3 1;
-#X connect 12 0 13 0;
-#X connect 15 0 5 0;
+#X obj 95 100 r \$0-msdin;
+#X connect 0 0 5 0;
+#X connect 3 0 2 1;
+#X connect 4 0 6 0;
+#X connect 5 0 13 0;
+#X connect 5 1 4 0;
+#X connect 5 2 4 0;
+#X connect 5 3 4 0;
+#X connect 5 4 4 0;
+#X connect 5 5 4 0;
+#X connect 5 6 4 0;
+#X connect 6 0 1 0;
+#X connect 6 1 2 0;
+#X connect 6 2 12 0;
+#X connect 9 0 12 1;
+#X connect 9 0 2 1;
+#X connect 10 0 11 0;
+#X connect 13 0 4 0;
+#X connect 14 0 4 0;
#X restore 24 165 pd compute;
-#X obj 24 143 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+#X obj 24 143 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 307 151 hsl 128 15 0 30 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
@@ -264,7 +262,7 @@
#X msg 206 231 36 \$1 \, 37 \$1 \, 38 \$1 \, 45 \$1 \, 46 \$1 \, 47
\$1;
#X obj 206 207 / 3;
-#X obj 173 286 s msdin;
+#X obj 173 286 s \$0-msdin;
#X connect 0 0 3 0;
#X connect 0 0 4 0;
#X connect 0 0 7 0;
@@ -292,24 +290,24 @@
;
#X text 44 142 display forces (green) and speeds (red);
#N canvas 0 22 450 300 forces 0;
-#X obj 167 157 s msdin;
#X msg 167 134 forceX corde \$1;
#X obj 167 89 inlet;
#X obj 167 112 / 300;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
+#X obj 167 157 s \$0-msdin;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
#X restore 304 56 pd forces;
#X obj 307 34 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
--1 -1 2500 1;
+-1 -1 0 1;
#N canvas 0 22 450 300 general_damping 0;
#X msg 172 143 setD D2 \$1;
-#X obj 172 166 s msdin;
#X obj 172 121 / 5;
#X obj 173 100 inlet;
-#X connect 0 0 1 0;
-#X connect 2 0 0 0;
-#X connect 3 0 2 0;
+#X obj 172 166 s \$0-msdin;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
#X restore 304 171 pd general_damping;
#X text 302 74 Send forces in the middle;
#X text 302 16 Send forces;
diff --git a/msd/03_msdwave.pd b/msd/03_msdwave.pd
index 8e196ce..816840a 100644
--- a/msd/03_msdwave.pd
+++ b/msd/03_msdwave.pd
@@ -1,4 +1,4 @@
-#N canvas 360 104 602 232 10;
+#N canvas 617 175 594 188 10;
#X obj 29 20 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X text 49 19 Reset;
@@ -7,7 +7,6 @@
#N canvas 0 22 981 585 structure_creation 0;
#X msg 681 243 mass filet 1 100 0;
#X msg 663 64 reset;
-#X obj 690 527 s msdin;
#X obj 418 25 t b b b b b b b b b b b b;
#X obj 681 201 until;
#X msg 681 170 400;
@@ -37,47 +36,48 @@
399;
#X obj 418 -8 inlet;
#X obj 326 61 loadbang;
-#X connect 0 0 2 0;
-#X connect 1 0 2 0;
-#X connect 3 5 28 0;
-#X connect 3 6 15 0;
-#X connect 3 7 19 0;
-#X connect 3 8 7 0;
-#X connect 3 9 11 0;
-#X connect 3 10 5 0;
-#X connect 3 11 1 0;
-#X connect 4 0 0 0;
-#X connect 5 0 4 0;
-#X connect 6 0 2 0;
+#X obj 690 527 s \$0-msdin;
+#X connect 0 0 30 0;
+#X connect 1 0 30 0;
+#X connect 2 5 27 0;
+#X connect 2 6 14 0;
+#X connect 2 7 18 0;
+#X connect 2 8 6 0;
+#X connect 2 9 10 0;
+#X connect 2 10 4 0;
+#X connect 2 11 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
+#X connect 5 0 30 0;
+#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X connect 9 0 14 0;
-#X connect 10 0 9 1;
-#X connect 11 0 9 1;
-#X connect 12 0 13 1;
-#X connect 13 0 6 0;
-#X connect 14 0 13 0;
-#X connect 14 1 12 0;
+#X connect 8 0 13 0;
+#X connect 9 0 8 1;
+#X connect 10 0 8 1;
+#X connect 11 0 12 1;
+#X connect 12 0 5 0;
+#X connect 13 0 12 0;
+#X connect 13 1 11 0;
+#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 17 0 20 0;
-#X connect 18 0 17 1;
-#X connect 19 0 17 1;
-#X connect 20 0 23 0;
-#X connect 20 1 21 0;
-#X connect 21 0 22 0;
-#X connect 22 0 23 1;
-#X connect 23 0 25 0;
-#X connect 24 0 27 0;
-#X connect 25 0 24 0;
-#X connect 25 1 26 0;
-#X connect 26 0 24 1;
-#X connect 27 0 2 0;
+#X connect 16 0 19 0;
+#X connect 17 0 16 1;
+#X connect 18 0 16 1;
+#X connect 19 0 22 0;
+#X connect 19 1 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 1;
+#X connect 22 0 24 0;
+#X connect 23 0 26 0;
+#X connect 24 0 23 0;
+#X connect 24 1 25 0;
+#X connect 25 0 23 1;
+#X connect 26 0 30 0;
+#X connect 27 0 30 0;
#X connect 28 0 2 0;
-#X connect 29 0 3 0;
-#X connect 30 0 3 0;
+#X connect 29 0 2 0;
#X restore 29 39 pd structure_creation;
#N canvas 813 63 450 300 gem 0;
#X obj 114 171 gemwin;
@@ -91,21 +91,21 @@
#X connect 4 0 2 0;
#X connect 4 1 1 0;
#X restore 30 85 pd gem;
-#X obj 30 63 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+#X obj 30 63 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
;
#X text 200 -6 send forces;
#X text 200 7 on a row;
#N canvas 0 22 450 300 damping 0;
#X msg 151 90 setD fil \$1;
-#X obj 151 113 s msdin;
#X obj 151 70 / 8;
#X obj 151 47 inlet;
-#X connect 0 0 1 0;
-#X connect 2 0 0 0;
-#X connect 3 0 2 0;
+#X obj 151 113 s \$0-msdin;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
#X restore 301 119 pd damping;
#X obj 304 100 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 0 1;
+-1 -1 12700 1;
#X text 300 79 change viscosity;
#N canvas 0 22 450 300 row 0;
#X msg 149 87 20;
@@ -115,8 +115,8 @@
#X msg 208 113 6;
#X obj 149 63 t b b;
#X msg 149 153 forceX \$1 30;
-#X obj 149 183 s msdin;
#X obj 149 38 inlet;
+#X obj 149 183 s \$0-msdin;
#X connect 0 0 2 0;
#X connect 1 0 3 0;
#X connect 1 0 6 0;
@@ -125,48 +125,46 @@
#X connect 4 0 1 1;
#X connect 5 0 0 0;
#X connect 5 1 4 0;
-#X connect 6 0 7 0;
-#X connect 8 0 5 0;
+#X connect 6 0 8 0;
+#X connect 7 0 5 0;
#X restore 202 51 pd row;
#X obj 201 105 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 199 70 send forces;
#X text 50 63 Gem on/off;
#X obj 305 38 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 0 1;
+-1 -1 1300 1;
#X text 300 17 change rigidity;
#N canvas 0 22 450 300 rigi 0;
-#X obj 151 113 s msdin;
#X obj 151 47 inlet;
#X obj 151 70 / 4;
#X msg 151 90 setK fil \$1;
+#X obj 151 113 s \$0-msdin;
+#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
-#X connect 3 0 0 0;
#X restore 302 57 pd rigi;
#X text 199 83 on a point;
#N canvas 0 22 450 300 point 0;
-#X obj 192 156 s msdin;
#X msg 192 123 forceX 10 100;
#X obj 193 95 inlet;
+#X obj 192 156 s \$0-msdin;
+#X connect 0 0 2 0;
#X connect 1 0 0 0;
-#X connect 2 0 1 0;
#X restore 201 126 pd point;
-#X text 469 -9 move a corner;
+#X text 469 -2 move a corner;
#N canvas 0 22 450 300 corner 0;
#X msg 222 89 posX 0 \$1;
#X obj 222 65 / 30;
-#X obj 222 115 s msdin;
#X obj 223 32 inlet;
-#X connect 0 0 2 0;
+#X obj 222 115 s \$0-msdin;
+#X connect 0 0 3 0;
#X connect 1 0 0 0;
-#X connect 3 0 1 0;
+#X connect 2 0 1 0;
#X restore 471 155 pd corner;
#X obj 471 17 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 0 1;
#N canvas 696 124 709 588 compute 0;
-#X obj 301 215 print msd;
-#X obj 141 153 r msdin;
#X msg 126 130 bang \, get massesPos;
#X obj 126 27 gemhead;
#X obj 126 224 route massesPos;
@@ -193,35 +191,35 @@
;
#X obj 34 443 translateXYZ 0 0 -2;
#X obj 34 477 rotateXYZ 0 20 0;
-#X connect 1 0 18 0;
-#X connect 2 0 18 0;
+#X obj 141 153 r \$0-msdin;
+#X connect 0 0 16 0;
+#X connect 1 0 21 0;
+#X connect 2 0 10 0;
#X connect 3 0 23 0;
-#X connect 4 0 12 0;
-#X connect 5 0 25 0;
-#X connect 6 0 5 0;
+#X connect 4 0 3 0;
+#X connect 5 0 7 0;
+#X connect 5 0 11 0;
+#X connect 5 1 6 3;
+#X connect 6 0 20 0;
#X connect 7 0 9 0;
-#X connect 7 0 13 0;
-#X connect 7 1 8 3;
-#X connect 8 0 22 0;
-#X connect 9 0 11 0;
-#X connect 10 0 8 1;
-#X connect 11 0 10 0;
-#X connect 12 0 5 0;
-#X connect 12 1 7 0;
+#X connect 8 0 6 1;
+#X connect 9 0 8 0;
+#X connect 10 0 3 0;
+#X connect 10 1 5 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
#X connect 13 0 14 0;
-#X connect 14 0 15 0;
-#X connect 15 0 16 0;
-#X connect 16 0 8 2;
-#X connect 17 0 6 0;
-#X connect 18 0 4 0;
-#X connect 18 1 0 0;
-#X connect 19 0 21 0;
-#X connect 21 0 20 0;
-#X connect 23 0 2 0;
-#X connect 23 1 24 0;
-#X connect 24 0 18 0;
-#X connect 25 0 26 0;
-#X connect 26 0 8 0;
+#X connect 14 0 6 2;
+#X connect 15 0 4 0;
+#X connect 16 0 2 0;
+#X connect 17 0 19 0;
+#X connect 19 0 18 0;
+#X connect 21 0 0 0;
+#X connect 21 1 22 0;
+#X connect 22 0 16 0;
+#X connect 23 0 24 0;
+#X connect 24 0 6 0;
+#X connect 25 0 16 0;
#X restore 30 109 pd compute;
#X connect 0 0 3 0;
#X connect 2 0 11 0;
diff --git a/msd2D/01_msd2Dtest.pd b/msd2D/01_msd2Dtest.pd
index 91c6ddf..fe68b84 100644
--- a/msd2D/01_msd2Dtest.pd
+++ b/msd2D/01_msd2Dtest.pd
@@ -1,6 +1,6 @@
#N canvas 520 22 626 507 10;
#X obj 27 26 loadbang;
-#X obj 110 419 print msd;
+#X obj 127 419 print msd;
#X obj 369 155 gemwin;
#X msg 384 132 0 \, destroy;
#X text 260 26 2 DRAG THE STRUCTURE WITH THE MOUSE;
@@ -115,9 +115,7 @@
#X restore 366 289 pd linkrender;
#X msg 194 139 50 50;
#X msg 74 96 mass fix 0 100 50 50;
-#X obj 90 259 s msdin;
#X msg 58 139 mass mob 1 100 \$1 \$2;
-#X obj 84 373 r msdin;
#X msg 58 118 40 60 \, 60 60 \, 60 40 \, 40 40;
#X obj 194 162 s mouse_init;
#X msg 27 207 link souple mob mob 10 5;
@@ -125,44 +123,46 @@
#X text 25 1 creation : 5 masses and 20 links;
#X text 52 281 compute and get masses and links positions;
#X obj 53 397 msd2D;
-#X obj 52 419 s msdout;
-#X obj 365 423 s msdin;
-#X obj 366 218 r msdout;
#X text 364 315 move mass to mouse position;
#X text 365 197 display masses with gem;
#X msg 369 109 reset \, create \, 1;
#X text 261 6 1 CREATE WINDOW;
#X text 108 26 reset struct;
+#X obj 90 259 s \$0-msdin;
+#X obj 84 373 r \$0-msdin;
+#X obj 52 419 s \$0-msdout;
+#X obj 365 423 s \$0-msdin;
+#X obj 366 218 r \$0-msdout;
#X connect 0 0 7 0;
#X connect 3 0 2 0;
#X connect 5 0 7 0;
-#X connect 6 0 21 0;
-#X connect 7 0 26 0;
+#X connect 6 0 34 0;
+#X connect 7 0 24 0;
#X connect 7 1 19 0;
#X connect 7 1 8 0;
-#X connect 7 2 24 0;
+#X connect 7 2 22 0;
#X connect 7 3 20 0;
#X connect 7 4 6 0;
-#X connect 8 0 21 0;
+#X connect 8 0 34 0;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
-#X connect 11 0 30 0;
+#X connect 11 0 28 0;
#X connect 13 0 18 0;
#X connect 13 1 12 0;
#X connect 14 0 16 0;
#X connect 14 0 17 0;
#X connect 15 0 14 0;
-#X connect 16 0 32 0;
-#X connect 17 0 32 0;
-#X connect 19 0 25 0;
-#X connect 20 0 21 0;
+#X connect 16 0 37 0;
+#X connect 17 0 37 0;
+#X connect 19 0 23 0;
+#X connect 20 0 34 0;
+#X connect 21 0 34 0;
#X connect 22 0 21 0;
-#X connect 23 0 30 0;
-#X connect 24 0 22 0;
-#X connect 26 0 27 0;
-#X connect 26 0 21 0;
-#X connect 27 0 21 0;
-#X connect 30 0 31 0;
-#X connect 30 1 1 0;
-#X connect 33 0 13 0;
-#X connect 36 0 2 0;
+#X connect 24 0 25 0;
+#X connect 24 0 34 0;
+#X connect 25 0 34 0;
+#X connect 28 0 36 0;
+#X connect 28 1 1 0;
+#X connect 31 0 2 0;
+#X connect 35 0 28 0;
+#X connect 38 0 13 0;
diff --git a/msd2D/06_msd2Dgravit.pd b/msd2D/06_msd2Dgravit.pd
index 1d18198..0213fe5 100644
--- a/msd2D/06_msd2Dgravit.pd
+++ b/msd2D/06_msd2Dgravit.pd
@@ -1,7 +1,27 @@
-#N canvas 597 49 847 803 10;
-#X obj 119 28 cnv 15 400 300 empty empty CREATION 20 12 1 14 -260818
--66577 0;
-#X obj 167 310 t a;
+#N canvas 386 22 491 156 10;
+#X obj 18 21 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 39 18 reset;
+#N canvas 0 22 450 300 gem_stuff 0;
+#X msg 30 89 0 \, destroy;
+#X obj 30 185 gemhead;
+#X obj 30 238 world_light;
+#X obj 30 148 gemwin;
+#X msg 30 66 reset \, dimen 800 800 \, create \, lighting 1 \, 1;
+#X obj 30 212 rotateXYZ 30 20 0;
+#X obj 32 10 inlet;
+#X obj 32 37 sel 1 0;
+#X connect 0 0 3 0;
+#X connect 1 0 5 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 7 0;
+#X connect 7 0 4 0;
+#X connect 7 1 0 0;
+#X restore 18 87 pd gem_stuff;
+#X obj 18 69 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#N canvas 0 22 804 395 creation 0;
#X obj 42 28 bng 20 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
-1;
#X msg 239 84 reset;
@@ -84,26 +104,37 @@ in 1/R^2;
#X text 292 146 Particules;
#X msg 185 268 link sun fix mob 0.2 0 -2 0.4;
#X msg 167 178 forceX mob 5.9;
-#X obj 453 353 cnv 15 300 300 empty empty GEM_STUFF 20 12 1 14 -241291
--66577 0;
-#X msg 460 409 0 \, destroy;
-#X obj 460 525 gemhead;
-#X obj 460 578 world_light;
-#X obj 460 488 gemwin;
-#X msg 460 433 view 0 0 4 0 0 0 0 1 0;
-#X msg 460 386 reset \, dimen 800 800 \, create \, lighting 1 \, 1
-;
-#X obj 460 552 rotateXYZ 30 20 0;
-#X obj 38 359 cnv 15 350 250 empty empty COMPUTING 20 12 1 14 -260818
--66577 0;
-#X obj 52 542 msd2D --------------------------------;
-#X obj 52 424 t b;
-#X obj 52 401 gemhead;
-#X msg 197 483 forceX mob 0.051;
-#X msg 197 509 forceY mob 0.1;
-#X msg 52 458 bang \, bang \, get massesPos;
-#X obj 37 639 cnv 15 300 100 empty empty DISPLAYING 20 12 1 14 -241291
--66577 0;
+#X obj 167 310 s \$0-msdin;
+#X obj 166 25 inlet;
+#X connect 0 0 4 0;
+#X connect 1 0 19 0;
+#X connect 2 0 4 0;
+#X connect 4 0 9 0;
+#X connect 4 0 18 0;
+#X connect 4 1 8 0;
+#X connect 4 1 17 0;
+#X connect 4 2 14 0;
+#X connect 4 3 10 0;
+#X connect 4 4 1 0;
+#X connect 7 0 14 1;
+#X connect 8 0 19 0;
+#X connect 9 0 19 0;
+#X connect 10 0 19 0;
+#X connect 14 0 19 0;
+#X connect 17 0 19 0;
+#X connect 18 0 19 0;
+#X connect 20 0 4 0;
+#X restore 18 43 pd creation;
+#X text 116 58 gravity field simulation;
+#X text 115 72 if you have cpu problem \, you can reduce the mass number
+in "creation";
+#N canvas 0 22 450 300 compute 0;
+#X obj 52 182 msd2D --------------------------------;
+#X obj 52 64 t b;
+#X obj 52 41 gemhead;
+#X msg 197 123 forceX mob 0.051;
+#X msg 197 149 forceY mob 0.1;
+#X msg 52 98 bang \, bang \, get massesPos;
#N canvas 637 205 609 594 massrender 0;
#X obj 124 5 inlet;
#X obj 291 245 translateXYZ;
@@ -165,35 +196,17 @@ in 1/R^2;
#X connect 27 0 2 0;
#X connect 27 0 13 0;
#X connect 27 0 6 0;
-#X restore 52 709 pd massrender;
-#X obj 52 672 route massesPos;
-#X connect 1 0 30 0;
-#X connect 2 0 6 0;
-#X connect 3 0 1 0;
-#X connect 4 0 6 0;
-#X connect 6 0 11 0;
-#X connect 6 0 20 0;
-#X connect 6 1 10 0;
-#X connect 6 1 19 0;
-#X connect 6 2 16 0;
-#X connect 6 3 12 0;
-#X connect 6 4 3 0;
-#X connect 9 0 16 1;
-#X connect 10 0 1 0;
-#X connect 11 0 1 0;
-#X connect 12 0 1 0;
-#X connect 16 0 1 0;
-#X connect 19 0 1 0;
-#X connect 20 0 1 0;
-#X connect 22 0 25 0;
-#X connect 23 0 28 0;
-#X connect 26 0 25 0;
-#X connect 27 0 25 0;
-#X connect 28 0 24 0;
-#X connect 30 0 38 0;
-#X connect 31 0 35 0;
-#X connect 32 0 31 0;
-#X connect 33 0 30 0;
-#X connect 34 0 30 0;
-#X connect 35 0 30 0;
-#X connect 38 0 37 0;
+#X restore 52 239 pd massrender;
+#X obj 52 212 route massesPos;
+#X obj 63 147 r \$0-msdin;
+#X connect 0 0 7 0;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 7 0 6 0;
+#X connect 8 0 0 0;
+#X restore 18 107 pd compute;
+#X connect 0 0 4 0;
+#X connect 3 0 2 0;
diff --git a/msd3D/01_msd3Dtest.pd b/msd3D/01_msd3Dtest.pd
index a40907f..744adf2 100644
--- a/msd3D/01_msd3Dtest.pd
+++ b/msd3D/01_msd3Dtest.pd
@@ -1,133 +1,53 @@
-#N canvas 524 22 867 806 10;
-#X obj 32 13 loadbang;
-#X obj 294 522 print msd;
-#X obj 642 647 gemwin;
-#X msg 642 625 0 \, destroy;
-#X obj 532 707 gemhead;
-#X obj 532 730 world_light;
-#X msg 642 562 reset \, create \, lighting 1 \, 1;
-#X obj 102 13 cnv 15 500 270 empty empty empty 20 12 0 14 -262131 -66577
-0;
-#X obj 115 259 t a;
-#X obj 115 18 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262131 -1
+#N canvas 499 22 653 522 10;
+#X obj 27 26 loadbang;
+#X obj 127 419 print msd;
+#X obj 263 104 gemwin;
+#X msg 278 81 0 \, destroy;
+#X text 260 26 2 DRAG THE STRUCTURE WITH THE MOUSE;
+#X obj 87 27 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
-#X msg 187 69 reset;
-#X text 153 19 reset;
-#X obj 115 40 t b b b b b;
-#X msg 133 158 50 50;
-#X obj 30 290 cnv 15 572 80 empty empty empty 20 12 0 14 -261689 -66577
-0;
-#X obj 33 298 gemhead;
-#X obj 33 321 t b;
-#X msg 33 343 bang \, get massesPos \, get linksPos;
-#X text 393 85 CREATION : 3 MASSES \, 2 LINKS;
-#X text 272 311 COMPUTE AND GET ALL MASSES AND LINKS POSITIONS;
-#X obj 30 374 cnv 15 572 110 empty empty empty 20 12 0 14 -262131 -66577
-0;
-#X msg 65 381 setD souple 0.01;
-#X msg 196 382 setK souple 1;
-#X msg 65 401 setD souple 1;
-#X msg 196 402 setK souple 2;
-#X text 331 394 SET RIGIDITY AND VISCOSITY OF LINKS;
-#X text 347 440 ADD FORCE ON ALL MOBILE MASSES;
-#X obj 27 545 cnv 15 400 200 empty empty empty 20 12 0 14 -261689 -66577
-0;
-#N canvas 643 123 617 602 massrender 0;
-#X obj 183 15 inlet;
+#X msg 90 76 reset;
+#X obj 27 47 t b b b b b;
+#X msg 42 186 Xmax 100 \, Xmin 0 \, Ymax 100 \, Ymin 0;
+#X obj 53 300 gemhead;
+#X obj 53 323 t b;
+#X msg 53 345 bang \, get massesPos \, get linksPos;
+#N canvas 643 123 308 285 massrender 0;
+#X obj 127 22 inlet;
#X obj 48 203 translateXYZ;
-#X obj 48 229 sphere 0.1;
-#X obj 183 79 / 12.5;
-#X obj 183 102 - 4;
-#X obj 248 80 / 12.5;
-#X obj 248 103 - 4;
+#X obj 127 86 / 12.5;
+#X obj 127 109 - 4;
+#X obj 192 87 / 12.5;
+#X obj 192 110 - 4;
#X obj 48 177 separator;
-#X obj 181 129 t b f;
-#X obj 300 80 / 12.5;
-#X obj 300 103 - 4;
-#X obj 183 50 unpack f f f f;
-#X obj 48 148 gemhead 45;
-#X obj 48 90 loadbang;
-#X msg 48 118 0;
+#X obj 125 136 t b f;
+#X obj 48 141 gemhead 45;
+#X msg 48 104 0;
+#X obj 47 58 loadbang;
+#X obj 127 57 unpack f f f f;
+#X obj 238 88 / 12.5;
+#X obj 238 111 - 4;
+#X obj 48 229 sphere 0.1;
#X connect 0 0 11 0;
-#X connect 1 0 2 0;
-#X connect 3 0 4 0;
-#X connect 4 0 8 0;
-#X connect 5 0 6 0;
-#X connect 6 0 1 2;
-#X connect 7 0 1 0;
-#X connect 8 0 12 0;
-#X connect 8 1 1 1;
-#X connect 9 0 10 0;
-#X connect 10 0 1 3;
-#X connect 11 1 3 0;
-#X connect 11 2 5 0;
-#X connect 11 3 9 0;
-#X connect 12 0 7 0;
-#X connect 13 0 14 0;
-#X connect 14 0 12 0;
-#X restore 114 589 pd massrender;
-#N canvas 284 227 595 566 linkrender 0;
-#X obj 113 25 inlet;
-#X obj 113 117 / 12.5;
-#X obj 113 140 - 4;
-#X obj 167 118 / 12.5;
-#X obj 167 141 - 4;
-#X obj 44 222 separator;
-#X obj 113 164 t b f;
-#X obj 44 265 curve 2;
-#X obj 286 117 / 12.5;
-#X obj 286 140 - 4;
-#X obj 340 118 / 12.5;
-#X obj 340 141 - 4;
-#X obj 217 117 / 12.5;
-#X obj 217 142 - 4;
-#X obj 143 194 pack f f f;
-#X msg 143 217 \$1 \$2 \$3;
-#X obj 391 118 / 12.5;
-#X obj 391 141 - 4;
-#X obj 286 189 pack f f f;
-#X msg 286 212 \$1 \$2 \$3;
-#X obj 113 69 unpack f f f f f f f;
-#X obj 44 198 gemhead 45;
-#X obj 44 105 loadbang;
-#X msg 44 133 0;
-#X connect 0 0 20 0;
-#X connect 1 0 2 0;
-#X connect 2 0 6 0;
-#X connect 3 0 4 0;
-#X connect 4 0 14 1;
-#X connect 5 0 7 0;
-#X connect 6 0 21 0;
-#X connect 6 1 14 0;
-#X connect 8 0 9 0;
-#X connect 9 0 18 0;
-#X connect 10 0 11 0;
-#X connect 11 0 18 1;
+#X connect 1 0 14 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 2;
+#X connect 6 0 1 0;
+#X connect 7 0 8 0;
+#X connect 7 1 1 1;
+#X connect 8 0 6 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 11 1 2 0;
+#X connect 11 2 4 0;
+#X connect 11 3 12 0;
#X connect 12 0 13 0;
-#X connect 13 0 14 2;
-#X connect 14 0 15 0;
-#X connect 15 0 7 1;
-#X connect 16 0 17 0;
-#X connect 17 0 18 2;
-#X connect 18 0 19 0;
-#X connect 19 0 7 2;
-#X connect 20 1 1 0;
-#X connect 20 2 3 0;
-#X connect 20 3 12 0;
-#X connect 20 4 8 0;
-#X connect 20 5 10 0;
-#X connect 20 6 16 0;
-#X connect 21 0 5 0;
-#X connect 22 0 23 0;
-#X connect 23 0 21 0;
-#X restore 33 610 pd linkrender;
-#X obj 33 560 route linksPos massesPos;
-#X text 241 570 DISPLAY MASSES AND LINKS;
-#X text 289 592 WITH GEM;
-#X text 445 561 1 CREATE WINDOW -->;
-#X text 444 624 3 AND DESTROY IT! -->;
-#X text 444 592 2 DRAG THE STRUCTURE WITH THE MOUSE;
-#N canvas 731 296 454 304 gemmouse 0;
+#X connect 13 0 1 3;
+#X restore 436 267 pd massrender;
+#X obj 366 244 route linksPos massesPos;
+#N canvas 731 296 458 308 gemmouse 0;
#X obj 189 77 gemmouse;
#X obj 189 184 pack f f;
#X obj 189 218 spigot;
@@ -137,73 +57,136 @@
#X obj 189 108 / 5;
#X obj 216 108 / -5;
#X obj 79 51 inlet;
-#X obj 140 75 inlet;
#X obj 109 98 t b;
#X obj 141 120 list;
+#X obj 141 41 r mouse_init;
#X connect 0 0 6 0;
#X connect 0 1 7 0;
#X connect 0 2 2 1;
#X connect 1 0 2 0;
-#X connect 2 0 11 1;
+#X connect 2 0 10 1;
#X connect 4 0 1 0;
#X connect 5 0 1 1;
#X connect 6 0 4 0;
#X connect 7 0 5 0;
-#X connect 8 0 10 0;
-#X connect 9 0 11 1;
-#X connect 10 0 11 0;
-#X connect 11 0 3 0;
-#X restore 33 672 pd gemmouse;
-#X obj 33 651 gemhead;
-#X msg 33 693 posX fix \$1;
-#X msg 33 714 posY fix \$2;
-#X text 184 675 SET FIXED MASS TO MOUSE POSITION;
-#X obj 33 497 msd3D --------------------------------;
-#X msg 62 440 forceZ mob 200;
-#X msg 188 441 forceZ mob -200;
-#X msg 151 138 mass mob 1 \$1 \$2 \$3 \$4;
-#X msg 133 179 Xmax 100 \, Xmin 0 \, Ymax 100 \, Ymin 0 \, Zmax 70
-\, Zmin 0;
-#X msg 169 89 mass fix 0 100 50 50 50;
-#X msg 115 232 link souple \$1 \$2 5 10;
-#X msg 115 211 0 1 \, 1 2;
-#X msg 151 114 100 20 10 20 \, 200 20 25 0;
-#X connect 0 0 12 0;
-#X connect 3 0 2 0;
-#X connect 4 0 5 0;
-#X connect 6 0 2 0;
-#X connect 8 0 41 0;
-#X connect 9 0 12 0;
-#X connect 10 0 8 0;
-#X connect 12 0 48 0;
-#X connect 12 1 13 0;
-#X connect 12 1 45 0;
-#X connect 12 2 49 0;
-#X connect 12 3 46 0;
-#X connect 12 4 10 0;
-#X connect 13 0 36 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 3 0;
+#X connect 11 0 10 1;
+#X restore 366 356 pd gemmouse;
+#X obj 366 335 gemhead;
+#X msg 366 377 posX fix \$1;
+#X msg 366 398 posY fix \$2;
+#N canvas 0 22 454 304 linkrender 0;
+#X obj 127 22 inlet;
+#X obj 128 86 / 12.5;
+#X obj 128 109 - 4;
+#X obj 183 87 / 12.5;
+#X obj 183 110 - 4;
+#X obj 48 177 separator;
+#X obj 128 136 t b f;
+#X obj 262 88 / 12.5;
+#X obj 262 111 - 4;
+#X obj 290 112 / 12.5;
+#X obj 290 135 - 4;
+#X obj 48 222 curve 2;
+#X obj 155 189 pack f f 0;
+#X obj 262 192 pack f f 0;
+#X obj 48 130 gemhead 45;
+#X obj 47 44 loadbang;
+#X msg 47 68 0;
+#X obj 127 57 unpack f f f f f f f;
+#X obj 212 112 / 12.5;
+#X obj 212 135 - 4;
+#X obj 319 135 / 12.5;
+#X obj 319 158 - 4;
+#X connect 0 0 17 0;
+#X connect 1 0 2 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 12 1;
+#X connect 5 0 11 0;
+#X connect 6 0 14 0;
+#X connect 6 1 12 0;
+#X connect 7 0 8 0;
+#X connect 8 0 13 0;
+#X connect 9 0 10 0;
+#X connect 10 0 13 1;
+#X connect 12 0 11 1;
+#X connect 13 0 11 2;
+#X connect 14 0 5 0;
#X connect 15 0 16 0;
-#X connect 16 0 17 0;
-#X connect 17 0 41 0;
-#X connect 21 0 41 0;
-#X connect 22 0 41 0;
-#X connect 23 0 41 0;
-#X connect 24 0 41 0;
-#X connect 30 0 29 0;
-#X connect 30 1 28 0;
-#X connect 30 2 1 0;
-#X connect 36 0 38 0;
-#X connect 36 0 39 0;
-#X connect 37 0 36 0;
-#X connect 38 0 41 0;
-#X connect 39 0 41 0;
-#X connect 41 0 30 0;
-#X connect 41 1 1 0;
-#X connect 42 0 41 0;
-#X connect 43 0 41 0;
-#X connect 44 0 8 0;
-#X connect 45 0 8 0;
-#X connect 46 0 8 0;
-#X connect 47 0 8 0;
-#X connect 48 0 47 0;
-#X connect 49 0 44 0;
+#X connect 16 0 14 0;
+#X connect 17 1 1 0;
+#X connect 17 2 3 0;
+#X connect 17 3 18 0;
+#X connect 17 4 7 0;
+#X connect 17 5 9 0;
+#X connect 17 6 20 0;
+#X connect 18 0 19 0;
+#X connect 19 0 12 2;
+#X connect 20 0 21 0;
+#X connect 21 0 13 2;
+#X restore 366 289 pd linkrender;
+#X msg 206 139 50 50;
+#X msg 58 118 40 60 \, 60 60 \, 60 40 \, 40 40;
+#X obj 206 162 s mouse_init;
+#X msg 27 207 link souple mob mob 10 5;
+#X msg 27 230 link souple fix mob 10 5;
+#X text 25 1 creation : 5 masses and 20 links;
+#X text 52 281 compute and get masses and links positions;
+#X text 364 315 move mass to mouse position;
+#X text 365 197 display masses with gem;
+#X text 261 6 1 CREATE WINDOW;
+#X text 108 26 reset struct;
+#X obj 90 259 s \$0-msdin;
+#X obj 84 373 r \$0-msdin;
+#X obj 52 419 s \$0-msdout;
+#X obj 365 423 s \$0-msdin;
+#X obj 366 218 r \$0-msdout;
+#X msg 74 96 mass fix 0 100 50 50 50;
+#X msg 58 139 mass mob 1 100 \$1 \$2 50;
+#X obj 53 397 msd3D;
+#X obj 368 177 s \$0-msdin;
+#X msg 369 129 forceZ mob 200;
+#X msg 368 153 forceZ mob 200;
+#X text 367 108 send vertical forces;
+#X msg 263 58 reset \, create \, lighting 1 \, 1;
+#X obj 51 454 gemhead;
+#X obj 51 476 world_light;
+#X connect 0 0 7 0;
+#X connect 3 0 2 0;
+#X connect 5 0 7 0;
+#X connect 6 0 30 0;
+#X connect 7 0 22 0;
+#X connect 7 1 19 0;
+#X connect 7 1 8 0;
+#X connect 7 2 20 0;
+#X connect 7 3 35 0;
+#X connect 7 4 6 0;
+#X connect 8 0 30 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 37 0;
+#X connect 13 0 18 0;
+#X connect 13 1 12 0;
+#X connect 14 0 16 0;
+#X connect 14 0 17 0;
+#X connect 15 0 14 0;
+#X connect 16 0 33 0;
+#X connect 17 0 33 0;
+#X connect 19 0 21 0;
+#X connect 20 0 36 0;
+#X connect 22 0 23 0;
+#X connect 22 0 30 0;
+#X connect 23 0 30 0;
+#X connect 31 0 37 0;
+#X connect 34 0 13 0;
+#X connect 35 0 30 0;
+#X connect 36 0 30 0;
+#X connect 37 0 32 0;
+#X connect 37 1 1 0;
+#X connect 39 0 38 0;
+#X connect 40 0 38 0;
+#X connect 42 0 2 0;
+#X connect 43 0 44 0;
diff --git a/msd3D/02_msd3Dperf.pd b/msd3D/02_msd3Dperf.pd
index 8692d3e..0d87f9d 100644
--- a/msd3D/02_msd3Dperf.pd
+++ b/msd3D/02_msd3Dperf.pd
@@ -1,54 +1,24 @@
-#N canvas 545 25 704 830 10;
-#X obj 159 280 t a;
+#N canvas 652 25 483 246 10;
+#X obj 20 12 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 43 12 reset;
+#X text 323 102 <-- Move masses;
+#X obj 83 13 nbx 5 14 200 20000 1 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 347.56 1000;
+#X msg 206 45 forceX mob 10;
+#X msg 206 69 forceX mob -10;
+#X msg 225 95 forceY mob 10;
+#X msg 224 119 forceY mob -10;
+#X msg 238 143 forceZ mob 10;
+#X msg 237 167 forceZ mob -10;
+#N canvas 0 22 659 390 creation 0;
#X obj 159 5 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 231 60 reset;
#X obj 37 10 loadbang;
#X text 182 5 reset;
#X obj 159 27 t b b b b b;
-#X msg 456 528 0 \, destroy;
-#X obj 456 583 gemhead;
-#X obj 456 628 world_light;
-#X msg 456 468 reset \, create \, lighting 1 \, 1;
-#X obj 52 380 t b;
-#N canvas 643 123 617 602 massrender 0;
-#X obj 127 22 inlet;
-#X obj 48 203 translateXYZ;
-#X obj 48 153 gemhead;
-#X obj 48 177 separator;
-#X obj 125 136 t b f;
-#X obj 127 57 unpack f f f f;
-#X obj 48 229 cube 0.03;
-#X obj 48 99 loadbang;
-#X msg 48 127 0;
-#X connect 0 0 5 0;
-#X connect 1 0 6 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 4 0 2 0;
-#X connect 4 1 1 1;
-#X connect 5 1 4 0;
-#X connect 5 2 1 2;
-#X connect 5 3 1 3;
-#X connect 7 0 8 0;
-#X connect 8 0 2 0;
-#X restore 52 699 pd massrender;
-#X obj 52 357 gemhead;
-#X obj 456 548 gemwin;
-#X obj 52 655 msd3D --------------------------------;
-#X msg 456 508 view 8 0 0.5 0 0 0 0 0 1;
-#X text 434 160 <-- Number of masses;
-#X obj 456 487 t b;
-#X obj 52 678 route massesPos;
-#X msg 52 414 bang \, get massesPos;
-#X text 300 485 <-- Move masses;
-#X obj 456 605 rotateXYZ 30 30 0;
#X msg 213 116 mass fix 0 100 50 50 0;
-#X obj 75 491 metro 10;
-#X obj 76 469 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X floatatom 107 470 5 0 0 0 - - -;
-#X text 74 453 instead of GEM;
#N canvas 557 309 632 363 masses 0;
#X msg 417 145 seed 1;
#X msg 342 144 seed 2;
@@ -149,49 +119,96 @@
#X connect 11 0 3 0;
#X connect 12 0 10 1;
#X restore 159 191 pd links;
-#X obj 369 162 nbx 5 14 200 20000 1 0 empty empty empty 0 -6 0 10 -262144
--1 -1 200 1000;
#X msg 177 228 Xmax 4 \, Xmin -4 \, Ymax 4 \, Ymin -4 \, Zmax 4 \,
Zmin -4;
-#X msg 178 477 forceX mob 10;
-#X msg 179 501 forceX mob -10;
-#X msg 198 527 forceY mob 10;
-#X msg 197 551 forceY mob -10;
-#X msg 211 575 forceZ mob 10;
-#X msg 210 599 forceZ mob -10;
-#X connect 0 0 14 0;
-#X connect 1 0 5 0;
+#X obj 386 54 inlet;
+#X obj 232 7 inlet;
+#X obj 159 280 s \$0-msdin;
+#X connect 0 0 4 0;
+#X connect 1 0 11 0;
+#X connect 2 0 4 0;
+#X connect 4 0 7 0;
+#X connect 4 1 8 0;
+#X connect 4 2 6 0;
+#X connect 4 3 5 0;
+#X connect 4 4 1 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 0;
+#X connect 7 0 11 0;
+#X connect 8 0 11 0;
+#X connect 9 0 6 1;
+#X connect 9 0 7 1;
+#X connect 10 0 4 0;
+#X restore 20 32 pd creation;
+#X text 148 11 <-- Number of masses (change and reset);
+#N canvas 0 22 450 300 compute 0;
+#X obj 52 50 t b;
+#N canvas 643 123 617 602 massrender 0;
+#X obj 127 22 inlet;
+#X obj 48 203 translateXYZ;
+#X obj 48 153 gemhead;
+#X obj 48 177 separator;
+#X obj 125 136 t b f;
+#X obj 127 57 unpack f f f f;
+#X obj 48 229 cube 0.03;
+#X obj 48 99 loadbang;
+#X msg 48 127 0;
+#X connect 0 0 5 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 1 1 1;
+#X connect 5 1 4 0;
+#X connect 5 2 1 2;
+#X connect 5 3 1 3;
+#X connect 7 0 8 0;
+#X connect 8 0 2 0;
+#X restore 52 209 pd massrender;
+#X obj 52 27 gemhead;
+#X obj 52 188 route massesPos;
+#X msg 52 84 bang \, get massesPos;
+#X obj 52 165 msd3D;
+#X obj 79 132 r \$0-msdin;
+#X connect 0 0 4 0;
#X connect 2 0 0 0;
-#X connect 3 0 5 0;
-#X connect 5 0 28 0;
-#X connect 5 1 30 0;
-#X connect 5 2 27 0;
-#X connect 5 3 22 0;
-#X connect 5 4 2 0;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 5 0;
+#X restore 20 53 pd compute;
+#X obj 206 196 s \$0-msdin;
+#N canvas 0 22 450 300 gem 0;
+#X msg 106 118 0 \, destroy;
+#X obj 86 173 gemhead;
+#X obj 86 218 world_light;
+#X msg 86 58 reset \, create \, lighting 1 \, 1;
+#X obj 86 138 gemwin;
+#X msg 86 98 view 8 0 0.5 0 0 0 0 0 1;
+#X obj 86 77 t b;
+#X obj 86 195 rotateXYZ 30 30 0;
+#X obj 83 10 inlet;
+#X obj 85 32 sel 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 2 0;
+#X connect 8 0 9 0;
+#X connect 9 0 3 0;
+#X connect 9 1 0 0;
+#X restore 20 92 pd gem;
+#X obj 20 74 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X text 41 73 gem on/off;
+#X connect 0 0 10 0;
+#X connect 3 0 10 1;
+#X connect 4 0 13 0;
+#X connect 5 0 13 0;
#X connect 6 0 13 0;
-#X connect 7 0 21 0;
+#X connect 7 0 13 0;
+#X connect 8 0 13 0;
#X connect 9 0 13 0;
-#X connect 9 0 17 0;
-#X connect 10 0 19 0;
-#X connect 12 0 10 0;
-#X connect 14 0 18 0;
-#X connect 15 0 13 0;
-#X connect 17 0 15 0;
-#X connect 18 0 11 0;
-#X connect 19 0 14 0;
-#X connect 21 0 8 0;
-#X connect 22 0 0 0;
-#X connect 23 0 14 0;
-#X connect 24 0 23 0;
-#X connect 25 0 23 1;
-#X connect 27 0 0 0;
-#X connect 28 0 0 0;
-#X connect 29 0 27 1;
-#X connect 29 0 28 1;
-#X connect 30 0 0 0;
-#X connect 31 0 14 0;
-#X connect 32 0 14 0;
-#X connect 33 0 14 0;
-#X connect 34 0 14 0;
-#X connect 35 0 14 0;
-#X connect 36 0 14 0;
+#X connect 15 0 14 0;
diff --git a/msd3D/03_msd3Dmemb.pd b/msd3D/03_msd3Dmemb.pd
index 177d0bd..66309af 100644
--- a/msd3D/03_msd3Dmemb.pd
+++ b/msd3D/03_msd3Dmemb.pd
@@ -1,18 +1,55 @@
-#N canvas 580 22 794 809 10;
+#N canvas 807 173 535 198 10;
+#X obj 26 16 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 50 15 reset;
+#X text 182 65 Add a constant force;
+#X msg 338 127 posZ fix \$1;
+#X text 337 86 Change altitude of corners;
+#N canvas 0 22 616 405 creation 0;
#X obj 32 13 loadbang;
-#X obj 294 641 print msd;
-#X obj 461 703 gemwin;
-#X msg 461 681 0 \, destroy;
-#X obj 688 623 gemhead;
-#X obj 688 646 world_light;
-#X obj 130 361 t a;
#X obj 129 18 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262131 -1
-1;
#X msg 202 59 reset;
#X text 167 19 reset;
-#X msg 65 500 setD souple 0.01;
-#X msg 65 520 setD souple 1;
-#X msg 196 521 setK souple 2;
+#X msg 148 229 Xmax 100 \, Xmin 0 \, Ymax 100 \, Ymin 0 \, Zmax 70
+\, Zmin 0;
+#X msg 130 255 0 4 \, 4 5 \, 5 6 \, 6 1 \, 7 8 \, 8 9 \, 9 10 \, 10
+11 \, 12 13 \, 13 14 \, 14 15 \, 15 16 \, 17 18 \, 18 19 \, 19 20 \,
+20 21 \, 2 22 \, 22 23 \, 23 24 \, 24 3 \, 0 7 \, 4 8 \, 5 9 \, 6 10
+\, 1 11 \, 7 12 \, 8 13 \, 9 14 \, 10 15 \, 11 16 \, 12 17 \, 13 18
+\, 14 19 \, 15 20 \, 16 21 \, 2 17 \, 18 22 \, 19 23 \, 20 24 \, 21
+3;
+#X msg 166 130 30 40 40 \, 30 50 40 \, 30 60 40 \, 40 30 40 \, 40 40
+40 \, 40 50 40 \, 40 60 40 \, 40 70 40 \, 50 30 40 \, 50 40 40 \, 50
+50 40 \, 50 60 40 \, 50 70 40 \, 60 30 40 \, 60 40 40 \, 60 50 40 \,
+60 60 40 \, 60 70 40 \, 70 40 40 \, 70 50 40 \, 70 60 40;
+#X msg 184 82 mass fix 0 100 30 30 40 \, mass fix 0 100 30 70 40 \,
+mass fix 0 100 70 30 40 \, mass fix 0 100 70 70 40;
+#X obj 130 38 t b b b b b;
+#X msg 166 193 mass mob 1 70 \$1 \$2 \$3;
+#X msg 130 335 link souple \$1 \$2 2 10;
+#X msg 71 72 posZ fix 70;
+#X obj 130 361 s \$0-msdin;
+#X obj 204 14 inlet;
+#X connect 0 0 8 0;
+#X connect 1 0 8 0;
+#X connect 2 0 12 0;
+#X connect 4 0 12 0;
+#X connect 5 0 10 0;
+#X connect 6 0 9 0;
+#X connect 7 0 12 0;
+#X connect 8 0 5 0;
+#X connect 8 0 11 0;
+#X connect 8 1 4 0;
+#X connect 8 2 6 0;
+#X connect 8 3 7 0;
+#X connect 8 4 2 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 0;
+#X connect 11 0 12 0;
+#X connect 13 0 8 0;
+#X restore 26 36 pd creation;
+#N canvas 0 22 450 300 compute 0;
#N canvas 613 332 591 562 linkrender 0;
#X obj 93 25 inlet;
#X obj 93 117 / 12.5;
@@ -86,95 +123,85 @@
#X connect 30 0 5 0;
#X connect 31 0 32 0;
#X connect 32 0 29 0;
-#X restore 33 666 pd linkrender;
-#X obj 33 616 msd3D --------------------------------;
-#X msg 62 559 forceZ mob 200;
-#X msg 148 229 Xmax 100 \, Xmin 0 \, Ymax 100 \, Ymin 0 \, Zmax 70
-\, Zmin 0;
-#X msg 130 255 0 4 \, 4 5 \, 5 6 \, 6 1 \, 7 8 \, 8 9 \, 9 10 \, 10
-11 \, 12 13 \, 13 14 \, 14 15 \, 15 16 \, 17 18 \, 18 19 \, 19 20 \,
-20 21 \, 2 22 \, 22 23 \, 23 24 \, 24 3 \, 0 7 \, 4 8 \, 5 9 \, 6 10
-\, 1 11 \, 7 12 \, 8 13 \, 9 14 \, 10 15 \, 11 16 \, 12 17 \, 13 18
-\, 14 19 \, 15 20 \, 16 21 \, 2 17 \, 18 22 \, 19 23 \, 20 24 \, 21
-3;
-#X msg 166 130 30 40 40 \, 30 50 40 \, 30 60 40 \, 40 30 40 \, 40 40
-40 \, 40 50 40 \, 40 60 40 \, 40 70 40 \, 50 30 40 \, 50 40 40 \, 50
-50 40 \, 50 60 40 \, 50 70 40 \, 60 30 40 \, 60 40 40 \, 60 50 40 \,
-60 60 40 \, 60 70 40 \, 70 40 40 \, 70 50 40 \, 70 60 40;
-#X msg 461 656 view 0 4 0 0 0 0 0 0 1;
-#X msg 461 614 view 4 0 0.5 0 0 0 0 0 1;
-#X obj 312 479 f;
-#X floatatom 328 456 5 0 0 0 - - -;
-#X obj 312 403 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X msg 312 504 forceZ mob \$1;
-#X obj 312 423 metro 65;
-#X msg 461 635 view 0 0 4 0 0 0 0 1 0;
-#X text 370 401 Add a constant force;
-#X obj 33 641 route linksPos;
-#X msg 184 82 mass fix 0 100 30 30 40 \, mass fix 0 100 30 70 40 \,
-mass fix 0 100 70 30 40 \, mass fix 0 100 70 70 40;
-#X msg 527 543 posZ fix \$1;
-#X obj 527 402 vsl 15 128 0 70 0 0 empty empty empty 0 -8 0 8 -262131
--1 -1 10900 1;
-#X text 559 457 Change altitude of corners;
-#X text 385 455 Amplitude;
-#X text 357 587 Create window;
-#X text 369 636 Change view;
-#X obj 130 38 t b b b b b;
-#X text 98 428 Multiple draw;
-#X msg 188 560 forceZ mob -0.1;
-#X msg 166 193 mass mob 1 70 \$1 \$2 \$3;
-#X msg 461 590 reset \, dimen 800 800 \, create \, lighting 1 \, 1
-;
-#X msg 130 335 link souple \$1 \$2 2 10;
-#X msg 196 501 setK souple 10;
-#X msg 71 72 posZ fix 70;
-#X obj 33 399 gemhead 15;
-#X msg 33 462 bang \, get linksPos;
-#X obj 33 427 t b b b;
-#X connect 0 0 36 0;
+#X restore 33 225 pd linkrender;
+#X obj 33 200 route linksPos;
+#X text 98 93 Multiple draw;
+#X obj 33 64 gemhead 15;
+#X msg 33 127 bang \, get linksPos;
+#X obj 33 92 t b b b b;
+#X obj 33 175 msd3D;
+#X obj 75 148 r \$0-msdin;
+#X connect 1 0 0 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 0;
+#X connect 5 2 4 0;
+#X connect 5 3 4 0;
+#X connect 6 0 1 0;
+#X connect 7 0 6 0;
+#X restore 26 59 pd compute;
+#X text 182 23 membrane with a multiple drawing;
+#N canvas 0 22 450 300 constant 0;
+#X obj 122 129 f;
+#X msg 122 154 forceZ mob \$1;
+#X obj 122 73 metro 65;
+#X obj 122 25 inlet;
+#X obj 225 25 inlet;
+#X obj 122 180 s \$0-msdin;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
#X connect 3 0 2 0;
-#X connect 4 0 5 0;
-#X connect 6 0 14 0;
-#X connect 7 0 36 0;
-#X connect 8 0 6 0;
-#X connect 10 0 14 0;
-#X connect 11 0 14 0;
-#X connect 12 0 14 0;
-#X connect 14 0 28 0;
-#X connect 14 1 1 0;
-#X connect 15 0 14 0;
-#X connect 16 0 6 0;
-#X connect 17 0 41 0;
-#X connect 18 0 39 0;
-#X connect 19 0 2 0;
-#X connect 20 0 2 0;
-#X connect 21 0 24 0;
-#X connect 22 0 21 1;
-#X connect 23 0 25 0;
-#X connect 24 0 14 0;
-#X connect 25 0 21 0;
-#X connect 26 0 2 0;
-#X connect 28 0 13 0;
-#X connect 29 0 6 0;
-#X connect 30 0 14 0;
-#X connect 31 0 30 0;
-#X connect 36 0 17 0;
-#X connect 36 0 43 0;
-#X connect 36 1 16 0;
-#X connect 36 2 18 0;
-#X connect 36 3 29 0;
-#X connect 36 3 13 2;
-#X connect 36 4 8 0;
-#X connect 38 0 14 0;
-#X connect 39 0 6 0;
-#X connect 40 0 2 0;
-#X connect 41 0 6 0;
-#X connect 42 0 14 0;
-#X connect 43 0 6 0;
-#X connect 44 0 46 0;
-#X connect 45 0 14 0;
-#X connect 46 0 45 0;
-#X connect 46 1 45 0;
-#X connect 46 2 45 0;
+#X connect 4 0 0 1;
+#X restore 183 126 pd constant;
+#X obj 183 83 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X text 221 82 on/off;
+#X floatatom 183 104 5 0 0 0 - - -;
+#N canvas 583 304 450 300 gem 0;
+#X obj 101 220 gemwin;
+#X msg 120 102 0 \, destroy;
+#X obj 13 211 gemhead;
+#X obj 13 234 world_light;
+#X msg 219 198 view 0 4 0 0 0 0 0 0 1;
+#X msg 219 156 view 4 0 0.5 0 0 0 0 0 1;
+#X msg 219 177 view 0 0 4 0 0 0 0 1 0;
+#X text -3 77 Create window;
+#X text 9 126 Change view;
+#X msg 101 80 reset \, dimen 800 800 \, create \, lighting 1 \, 1;
+#X obj 101 17 inlet;
+#X obj 101 47 sel 1 0;
+#X obj 219 104 inlet;
+#X obj 219 134 sel 2 1 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 11 0;
+#X connect 11 0 9 0;
+#X connect 11 1 1 0;
+#X connect 12 0 13 0;
+#X connect 13 0 5 0;
+#X connect 13 1 6 0;
+#X connect 13 2 4 0;
+#X restore 26 135 pd gem;
+#X obj 26 87 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X text 79 84 gem on/off;
+#X obj 26 111 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1
+-1 1;
+#X text 79 110 change view;
+#X obj 341 107 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 221 103 amplitude;
+#X obj 338 150 s \$0-msdin;
+#X connect 0 0 5 0;
+#X connect 3 0 19 0;
+#X connect 9 0 8 0;
+#X connect 11 0 8 1;
+#X connect 13 0 12 0;
+#X connect 15 0 12 1;
+#X connect 17 0 3 0;
diff --git a/msd3D/04_msd3Dfilet.pd b/msd3D/04_msd3Dfilet.pd
index db41039..03c5b64 100644
--- a/msd3D/04_msd3Dfilet.pd
+++ b/msd3D/04_msd3Dfilet.pd
@@ -1,18 +1,70 @@
-#N canvas 579 22 867 806 10;
-#X obj 32 13 loadbang;
-#X obj 458 439 gemwin;
-#X msg 458 417 0 \, destroy;
-#X obj 457 469 gemhead;
-#X obj 457 492 world_light;
-#X msg 458 328 reset \, create \, lighting 1 \, 1;
-#X obj 145 205 t a;
-#X obj 144 18 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262131 -1
+#N canvas 719 216 416 177 10;
+#X obj 26 32 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
+#X text 47 31 reset;
+#N canvas 530 297 450 300 gem 0;
+#X obj 101 220 gemwin;
+#X msg 120 102 0 \, destroy;
+#X obj 13 211 gemhead;
+#X obj 13 234 world_light;
+#X msg 101 80 reset \, dimen 800 800 \, create \, lighting 1 \, 1;
+#X obj 101 17 inlet;
+#X obj 101 47 sel 1 0;
+#X obj 219 104 inlet;
+#X obj 219 134 sel 2 1 0;
+#X msg 219 177 view 0 0 2 0 0 0 0 1 0;
+#X msg 219 198 view 0 4 4 0 0 0 0 0 1;
+#X msg 219 156 view 2 0 3.5 0 0 0 0 0 1;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 6 1 1 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 8 1 9 0;
+#X connect 8 2 10 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X restore 26 135 pd gem;
+#X obj 26 87 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X text 79 84 gem on/off;
+#X obj 26 111 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X text 79 110 change view;
+#N canvas 0 22 584 305 creation 0;
#X msg 203 63 reset;
-#X text 182 19 reset;
-#X obj 33 298 gemhead;
-#X obj 33 321 t b;
-#X msg 33 343 bang \, get massesPos \, get linksPos;
+#X msg 203 83 symbol reset;
+#X msg 145 173 Xmax 100 \, Xmin 0 \, Ymax 100 \, Ymin 0 \, Zmax 70
+\, Zmin -40;
+#X msg 164 140 setFixed 62 \, setFixed 87 \, setFixed 512 \, setFixed
+537;
+#X obj 183 113 filet 20 30 2 2 20 30;
+#X obj 145 38 t b b b b;
+#X text 383 114 Filet abstraction : x0 y0 stepx stepy ny nx;
+#X obj 94 15 loadbang;
+#X obj 150 14 inlet;
+#X obj 145 205 s \$0-msdin;
+#X connect 0 0 9 0;
+#X connect 1 0 4 1;
+#X connect 2 0 9 0;
+#X connect 3 0 9 0;
+#X connect 4 0 9 0;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 5 2 4 0;
+#X connect 5 3 0 0;
+#X connect 5 3 1 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X restore 26 52 pd creation;
+#N canvas 0 22 563 472 compute 0;
+#X obj 33 28 gemhead;
+#X obj 33 51 t b;
+#X msg 33 73 bang \, get massesPos \, get linksPos;
#N canvas 643 123 613 598 massrender 0;
#X obj 130 9 inlet;
#X obj 48 203 translateXYZ;
@@ -46,7 +98,7 @@
#X connect 12 3 10 0;
#X connect 13 0 14 0;
#X connect 14 0 7 0;
-#X restore 114 589 pd massrender;
+#X restore 114 359 pd massrender;
#N canvas 284 227 595 566 linkrender 0;
#X obj 93 25 inlet;
#X obj 93 117 / 12.5;
@@ -101,48 +153,36 @@
#X connect 21 6 16 0;
#X connect 22 0 23 0;
#X connect 23 0 5 0;
-#X restore 33 610 pd linkrender;
-#X obj 33 539 route linksPos massesPos;
-#X msg 203 83 symbol reset;
-#X obj 33 497 msd3D --------------------------------;
-#X msg 107 430 forceZ filet -0.2;
-#X msg 145 173 Xmax 100 \, Xmin 0 \, Ymax 100 \, Ymin 0 \, Zmax 70
-\, Zmin -40;
-#X msg 164 140 setFixed 62 \, setFixed 87 \, setFixed 512 \, setFixed
-537;
-#X obj 183 113 filet 20 30 2 2 20 30;
-#X msg 458 349 view 4 0 0.5 0 0 0 0 0 1;
-#X text 187 408 Ambient force;
-#X text 648 380 Select view;
-#X obj 145 38 t b b b b;
-#X text 244 587 Connect mass or link to be viewed \, or both with good
-computer!;
-#X text 383 114 Filet abstraction : x0 y0 stepx stepy ny nx;
-#X msg 458 371 view 0 0 2 0 0 0 0 1 0;
-#X msg 458 392 view 0 4 4 0 0 0 0 0 1;
-#X connect 0 0 25 0;
-#X connect 2 0 1 0;
-#X connect 3 0 4 0;
-#X connect 5 0 1 0;
-#X connect 6 0 17 0;
-#X connect 7 0 25 0;
-#X connect 8 0 6 0;
-#X connect 10 0 11 0;
-#X connect 11 0 12 0;
-#X connect 12 0 18 0;
-#X connect 12 0 17 0;
-#X connect 15 1 13 0;
-#X connect 16 0 21 1;
-#X connect 17 0 15 0;
-#X connect 18 0 17 0;
-#X connect 19 0 6 0;
-#X connect 20 0 6 0;
-#X connect 21 0 6 0;
-#X connect 22 0 1 0;
-#X connect 25 0 19 0;
-#X connect 25 1 20 0;
-#X connect 25 2 21 0;
-#X connect 25 3 8 0;
-#X connect 25 3 16 0;
-#X connect 28 0 1 0;
-#X connect 29 0 1 0;
+#X restore 33 380 pd linkrender;
+#X obj 33 269 route linksPos massesPos;
+#X msg 46 145 forceZ filet -0.2;
+#X text 61 122 Ambient force;
+#X obj 47 188 r \$0-msdin;
+#X obj 147 296 inlet;
+#X obj 114 337 spigot;
+#X obj 33 341 spigot 1;
+#X obj 78 318 == 0;
+#X obj 33 227 msd3D;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 6 0;
+#X connect 2 0 13 0;
+#X connect 5 0 11 0;
+#X connect 5 1 10 0;
+#X connect 6 0 13 0;
+#X connect 8 0 13 0;
+#X connect 9 0 10 1;
+#X connect 9 0 12 0;
+#X connect 10 0 3 0;
+#X connect 11 0 4 0;
+#X connect 12 0 11 1;
+#X connect 13 0 5 0;
+#X restore 204 131 pd compute;
+#X obj 204 106 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 225 105 display links or masses;
+#X text 201 27 grid in a gravity field;
+#X connect 0 0 7 0;
+#X connect 3 0 2 0;
+#X connect 5 0 2 1;
+#X connect 9 0 8 0;
diff --git a/msd3D/05_msd3Dvline.pd b/msd3D/05_msd3Dvline.pd
index d0893c7..632d238 100644
--- a/msd3D/05_msd3Dvline.pd
+++ b/msd3D/05_msd3Dvline.pd
@@ -1,34 +1,56 @@
-#N canvas 799 61 800 658 10;
+#N canvas 711 237 465 154 10;
+#N canvas 530 297 450 300 gem 0;
+#X obj 101 220 gemwin;
+#X msg 120 102 0 \, destroy;
+#X obj 13 211 gemhead;
+#X obj 13 234 world_light;
+#X msg 101 80 reset \, dimen 800 800 \, create \, lighting 1 \, 1;
+#X obj 101 17 inlet;
+#X obj 101 47 sel 1 0;
+#X msg 219 156 view 0 0 11 0 0 0 1 0 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 4 0 0 0;
+#X connect 4 0 7 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 6 1 1 0;
+#X connect 7 0 0 0;
+#X restore 14 85 pd gem;
+#X obj 14 62 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X text 33 60 gem on/off;
+#N canvas 0 22 563 316 creation 0;
#X obj 32 13 loadbang;
-#X obj 457 430 gemwin;
-#X msg 457 408 0 \, destroy;
-#X obj 288 577 gemhead;
-#X obj 288 599 world_light;
-#X obj 146 205 t a;
-#X obj 146 16 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262131 -1
--1;
#X msg 204 68 reset;
-#X obj 33 179 gemhead;
#X msg 204 88 symbol reset;
-#X obj 33 497 msd3D --------------------------------;
#X obj 146 42 t b b b b;
-#X msg 296 393 forceZ filet \$1;
-#X obj 444 207 tgl 20 0 empty empty empty 0 -6 0 8 -262131 -1 -1 1
-1;
-#X obj 444 258 f;
-#X obj 444 234 metro 65;
-#X msg 457 327 reset \, dimen 800 800 \, create \, lighting 1 \, 1
-;
-#X obj 421 221 vsl 15 128 -1 1 0 0 empty empty empty 0 -8 0 8 -262131
--1 -1 10000 1;
-#X obj 206 315 sin;
-#X obj 206 335 *;
-#X obj 206 255 counter 0 360;
-#X obj 206 204 tgl 20 0 empty empty empty 0 -6 0 8 -262131 -1 -1 1
-1;
-#X obj 206 275 / 3.6;
-#X obj 206 295 * 6.28319;
-#X obj 206 232 metro 35;
+#X msg 165 139 setFixed 0 \, setFixed 29 \, setFixed 420 \, setFixed
+449;
+#X obj 184 115 filet -3.2 -3.2 0.22068 0.45714 15 30;
+#X msg 146 173 Xmax 4 \, Xmin -4 \, Ymax 4 \, Ymin -4 \, Zmax 9 \,
+Zmin -6;
+#X obj 146 205 s \$0-msdin;
+#X obj 147 19 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 7 0;
+#X connect 2 0 5 1;
+#X connect 3 0 6 0;
+#X connect 3 1 4 0;
+#X connect 3 2 5 0;
+#X connect 3 3 1 0;
+#X connect 3 3 2 0;
+#X connect 4 0 7 0;
+#X connect 5 0 7 0;
+#X connect 6 0 7 0;
+#X connect 8 0 3 0;
+#X restore 14 38 pd creation;
+#X text 34 17 reset;
+#X obj 14 20 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#N canvas 0 22 450 300 compute 0;
+#X obj 33 23 gemhead;
+#X obj 33 201 msd3D --------------------------------;
#N canvas 646 294 504 533 getmmasses 0;
#X obj 154 13 inlet;
#X obj 152 238 outlet;
@@ -45,9 +67,7 @@
#X connect 4 0 3 1;
#X connect 5 0 3 1;
#X connect 6 0 3 0;
-#X restore 51 364 pd getmmasses;
-#X obj 183 219 vsl 15 128 0 30 0 0 empty empty empty 0 -8 0 8 -262131
--1 -1 5000 1;
+#X restore 60 116 pd getmmasses;
#N canvas 259 464 942 390 massrender 0;
#X obj 286 2 inlet;
#X obj 306 144 pack f f f f;
@@ -115,75 +135,75 @@
#X connect 12 0 4 0;
#X connect 13 0 14 0;
#X connect 14 0 12 0;
-#X restore 33 565 pd massrender;
-#X msg 165 139 setFixed 0 \, setFixed 29 \, setFixed 420 \, setFixed
-449;
-#X text 459 113 Filet abstraction : x0 y0 stepx stepy ny nx;
-#X text 483 206 <-- Add constant force;
-#X text 240 204 <-- Add sinus force;
-#X obj 457 348 t b;
-#X text 179 18 Reset;
-#X obj 184 115 filet -3.2 -3.2 0.22068 0.45714 15 30;
-#X msg 327 449 setK fil 20;
-#X obj 104 93 s resban;
-#X msg 425 449 setK fil 10;
-#X text 528 458 Change physical parameters of links;
-#X msg 457 388 view 0 0 5 0 0 0 1 0 0;
-#X text 624 390 <-- Zoom in;
-#X msg 51 388 get massesPos \$1;
-#X msg 146 173 Xmax 4 \, Xmin -4 \, Ymax 4 \, Ymin -4 \, Zmax 9 \,
-Zmin -6;
-#X msg 457 369 view 0 0 11 0 0 0 1 0 0;
-#X obj 33 257 t b b;
-#X msg 29 323 bang;
-#X text 154 365 Get masses in order;
-#X obj 33 539 route massesPosNo;
-#X msg 425 468 setD fil 25;
-#X msg 326 468 setD fil 2;
-#X connect 0 0 11 0;
-#X connect 2 0 1 0;
-#X connect 3 0 4 0;
-#X connect 5 0 10 0;
-#X connect 6 0 11 0;
-#X connect 7 0 5 0;
-#X connect 8 0 44 0;
-#X connect 9 0 34 1;
-#X connect 10 0 47 0;
-#X connect 11 0 42 0;
-#X connect 11 1 28 0;
-#X connect 11 2 34 0;
-#X connect 11 3 7 0;
-#X connect 11 3 9 0;
-#X connect 12 0 10 0;
-#X connect 13 0 15 0;
-#X connect 14 0 12 0;
-#X connect 15 0 14 0;
-#X connect 16 0 1 0;
-#X connect 16 0 32 0;
-#X connect 17 0 14 1;
-#X connect 18 0 19 0;
-#X connect 19 0 12 0;
-#X connect 20 0 22 0;
-#X connect 21 0 24 0;
-#X connect 22 0 23 0;
-#X connect 23 0 18 0;
-#X connect 24 0 20 0;
-#X connect 25 0 41 0;
-#X connect 26 0 19 1;
-#X connect 28 0 5 0;
-#X connect 32 0 43 0;
-#X connect 34 0 5 0;
-#X connect 35 0 10 0;
-#X connect 37 0 10 0;
-#X connect 39 0 1 0;
-#X connect 41 0 10 0;
-#X connect 42 0 5 0;
-#X connect 43 0 1 0;
-#X connect 44 0 25 0;
-#X connect 44 0 45 0;
-#X connect 44 1 25 0;
-#X connect 44 1 45 0;
-#X connect 45 0 10 0;
-#X connect 47 0 27 0;
-#X connect 48 0 10 0;
-#X connect 49 0 10 0;
+#X restore 33 253 pd massrender;
+#X msg 60 140 get massesPos \$1;
+#X obj 33 47 t b b;
+#X msg 33 75 bang;
+#X text 154 155 Get masses in order;
+#X obj 33 227 route massesPosNo;
+#X obj 60 162 r \$0-msdin;
+#X connect 0 0 5 0;
+#X connect 1 0 8 0;
+#X connect 2 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 2 0;
+#X connect 5 0 6 0;
+#X connect 5 1 2 0;
+#X connect 5 1 6 0;
+#X connect 6 0 1 0;
+#X connect 8 0 3 0;
+#X connect 9 0 1 0;
+#X restore 14 106 pd compute;
+#N canvas 0 22 450 300 sinus 0;
+#X msg 206 243 forceZ filet \$1;
+#X obj 116 165 sin;
+#X obj 116 185 *;
+#X obj 116 105 counter 0 360;
+#X obj 116 54 tgl 20 0 empty empty empty 0 -6 0 8 -262131 -1 -1 0 0.23622
+;
+#X obj 116 125 / 3.6;
+#X obj 116 145 * 6.28319;
+#X obj 116 82 metro 35;
+#X obj 93 69 vsl 15 128 0 30 0 0 empty empty empty 0 -8 0 8 -262131
+-1 -1 0 1;
+#X text 64 215 Get masses in order;
+#X obj 206 264 s \$0-msdin;
+#X obj 163 51 inlet;
+#X connect 0 0 10 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 5 0;
+#X connect 4 0 7 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
+#X connect 7 0 3 0;
+#X connect 8 0 4 0;
+#X connect 11 0 2 1;
+#X connect 11 0 4 0;
+#X restore 150 106 pd sinus;
+#X obj 153 85 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 149 66 add sinusoidal force;
+#X text 290 67 add constant force;
+#N canvas 0 22 450 300 constant 0;
+#X msg 176 111 forceZ filet \$1;
+#X obj 176 33 tgl 20 0 empty empty empty 0 -6 0 8 -262131 -1 -1 0 1
+;
+#X obj 176 84 f;
+#X obj 176 60 metro 65;
+#X obj 176 132 s \$0-msdin;
+#X obj 225 28 inlet;
+#X connect 0 0 4 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 5 0 1 0;
+#X connect 5 0 2 1;
+#X restore 292 105 pd constant;
+#X obj 295 85 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 151 26 vertical lines under various forces;
+#X connect 1 0 0 0;
+#X connect 5 0 3 0;
+#X connect 8 0 7 0;
+#X connect 12 0 11 0;