473: brand new NS-2 mobility trace reader merged
authorMart?n Giachino <martin.giachino@gmail.com>
Sun, 20 Jun 2010 17:21:22 +0400
changeset 6366 ef2e946450fe
parent 6365 9e4fce3d1138
child 6367 702cb83d0e1c
473: brand new NS-2 mobility trace reader merged
AUTHORS
examples/mobility/default.ns_movements
examples/mobility/ns2-mobility-trace.cc
examples/mobility/waf
examples/mobility/wscript
samples/main-ns2-mob.cc
samples/ns2-mob.tr
samples/wscript
src/helper/ns2-mobility-helper.cc
src/helper/ns2-mobility-helper.h
--- a/AUTHORS	Sat Jun 19 17:10:57 2010 +0100
+++ b/AUTHORS	Sun Jun 20 17:21:22 2010 +0400
@@ -17,6 +17,7 @@
 Craig Dowell (craigdo@ee.washington.edu)
 Jahanzeb Farooq (Jahanzeb.Farooq@sophia.inria.fr, Fahanzeb.Farooq@gmail.com)
 Juliana Freitag Borin (juliana.freitag@gmail.com)
+Martin Giachino (martin.giachino@gmail.com,giachino@fing.edu.uy)
 Charline Taibi Guguen (charline.guguen@gmail.com)
 Tom Goff (tgoff@tgoff.net)
 David Gross (gdavid.devel@gmail.com)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/mobility/default.ns_movements	Sun Jun 20 17:21:22 2010 +0400
@@ -0,0 +1,683 @@
+$node_(0) set X_ 150.0
+$node_(0) set Y_ 93.98597018956875
+$ns_ at 0.0 "$node_(0) setdest 150.0 110.0 50.40378694202284"
+$ns_ at 0.3177148143422528 "$node_(0) setdest 159.68580405978113 110.0 50.40378694196106"
+$ns_ at 0.5098790275378633 "$node_(0) setdest 164.68580405978113 110.0 50.129146111974336"
+$ns_ at 0.6096214007438903 "$node_(0) setdest 170.0 110.0 50.39215470830349"
+$ns_ at 0.7150782118483221 "$node_(0) setdest 170.0 90.31419594021887 50.392154708372175"
+$ns_ at 1.1057303713701003 "$node_(0) setdest 170.0 90.0 49.99999999937131"
+$ns_ at 1.1120142901745567 "$node_(0) setdest 184.68580405978113 90.0 50.0000000000599"
+$ns_ at 1.4057303713698275 "$node_(0) setdest 199.68580405978113 90.0 50.000000000045475"
+$ns_ at 1.7057303713695546 "$node_(0) setdest 210.0 90.0 50.00000000002494"
+$ns_ at 1.912014290173829 "$node_(0) setdest 210.0 40.314195940218866 50.00000000004974"
+$ns_ at 2.9057303713684632 "$node_(0) setdest 210.0 20.314195940218866 50.000000000045475"
+$ns_ at 3.3057303713680994 "$node_(0) setdest 210.0 10.0 50.13316828893697"
+$ns_ at 3.511466340034076 "$node_(0) setdest 190.0 10.0 50.13316828895926"
+$ns_ at 3.9104038235923326 "$node_(0) setdest 190.0 24.685804059781134 50.13316828897492"
+$ns_ at 4.203339709374177 "$node_(0) setdest 190.0 29.685804059781134 50.000000000045475"
+$ns_ at 4.303339709374086 "$node_(0) setdest 190.0 39.685804059781134 50.000000000045475"
+$ns_ at 4.503339709373904 "$node_(0) setdest 190.0 44.685804059781134 50.000000000045475"
+$ns_ at 4.603339709373813 "$node_(0) setdest 190.0 50.0 50.00000000000561"
+$ns_ at 4.7096236281781785 "$node_(0) setdest 210.0 50.0 50.000000000045475"
+$ns_ at 5.109623628177815 "$node_(0) setdest 210.0 30.0 50.000000000045475"
+$ns_ at 5.509623628177451 "$node_(0) setdest 195.31419594021887 30.0 50.0000000000599"
+$ns_ at 5.803339709372722 "$node_(0) setdest 190.0 30.0 50.00000000000561"
+$ns_ at 5.909623628177087 "$node_(0) setdest 190.0 10.0 50.000000000045475"
+$ns_ at 6.309623628176723 "$node_(0) setdest 209.68580405978113 10.0 50.00000000005623"
+$ns_ at 6.703339709371903 "$node_(0) setdest 210.0 10.0 50.289519364409465"
+$ns_ at 6.709587451330663 "$node_(0) setdest 210.0 14.685804059781134 50.28951936579435"
+$ns_ at 6.802764004196433 "$node_(0) setdest 210.0 49.685804059781134 50.000000000045475"
+$ns_ at 7.502764004195797 "$node_(0) setdest 210.0 50.0 49.99999999937131"
+$ns_ at 7.509047923000253 "$node_(0) setdest 190.0 50.0 50.000000000045475"
+$ns_ at 7.909047922999889 "$node_(0) setdest 190.0 69.68580405978113 50.00000000005623"
+$ns_ at 8.302764004195069 "$node_(0) setdest 190.0 134.68580405978113 50.374516250445616"
+$ns_ at 9.593098975886733 "$node_(0) setdest 190.0 149.68580405978113 50.07536807533352"
+$ns_ at 9.892647448050411 "$node_(0) setdest 190.0 150.0 50.0415402089729"
+$ns_ at 9.898926150482566 "$node_(0) setdest 194.68580405978113 150.0 50.04154020787152"
+$ns_ at 9.992564436600787 "$node_(0) setdest 210.0 150.0 50.062022647116656"
+$ns_ at 10.298468895319274 "$node_(0) setdest 210.0 140.31419594021887 50.06202264717843"
+$ns_ at 10.491944978537958 "$node_(0) setdest 210.0 130.31419594021887 50.000000000045475"
+$ns_ at 10.691944978537776 "$node_(0) setdest 210.0 130.0 49.99999999937131"
+$ns_ at 10.698228897342233 "$node_(0) setdest 190.0 130.0 50.000000000045475"
+$ns_ at 11.098228897341869 "$node_(0) setdest 190.0 110.0 50.000000000045475"
+$ns_ at 11.498228897341505 "$node_(0) setdest 199.68580405978113 110.0 50.000000000067345"
+$ns_ at 11.691944978536867 "$node_(0) setdest 210.0 110.0 50.007801046995475"
+$ns_ at 11.898196717751034 "$node_(0) setdest 210.0 130.0 50.00780104701215"
+$ns_ at 12.298134319110432 "$node_(0) setdest 195.31419594021887 130.0 50.007801047004506"
+$ns_ at 12.591804581595625 "$node_(0) setdest 175.31419594021887 130.0 50.023618760831866"
+$ns_ at 12.991615720722166 "$node_(0) setdest 150.0 130.0 50.000000000037105"
+$ns_ at 13.497899639526167 "$node_(0) setdest 150.0 110.0 50.000000000045475"
+$ns_ at 13.897899639525804 "$node_(0) setdest 170.0 110.0 50.000000000045475"
+$ns_ at 14.29789963952544 "$node_(0) setdest 170.0 130.0 50.000000000045475"
+$ns_ at 14.697899639525076 "$node_(0) setdest 184.68580405978113 130.0 50.0000000000599"
+$ns_ at 14.991615720720347 "$node_(0) setdest 194.68580405978113 130.0 50.000000000045475"
+$ns_ at 15.191615720720165 "$node_(0) setdest 210.0 130.0 50.00000000003164"
+$ns_ at 15.497899639524348 "$node_(0) setdest 210.0 150.0 50.000000000045475"
+$ns_ at 15.897899639523985 "$node_(0) setdest 200.31419594021887 150.0 50.000000000067345"
+$ns_ at 16.091615720719346 "$node_(0) setdest 195.31419594021887 150.0 50.05164145133088"
+$ns_ at 16.191512544380203 "$node_(0) setdest 190.0 150.0 50.00000000000561"
+$ns_ at 16.297796463184568 "$node_(0) setdest 190.0 90.0 50.000000000045475"
+$ns_ at 17.497796463183477 "$node_(0) setdest 210.0 90.0 50.000000000045475"
+$ns_ at 17.897796463183113 "$node_(0) setdest 210.0 65.31419594021887 50.00000000005406"
+$ns_ at 18.3915125443782 "$node_(0) setdest 210.0 60.314195940218866 50.000000000045475"
+$ns_ at 18.49151254437811 "$node_(0) setdest 210.0 50.0 50.00000000002494"
+$ns_ at 18.697796463182385 "$node_(0) setdest 200.31419594021887 50.0 50.000000000067345"
+$ns_ at 18.891512544377747 "$node_(0) setdest 180.31419594021887 50.0 50.00027569783147"
+$ns_ at 19.291510338807257 "$node_(0) setdest 170.0 50.0 50.00000000002494"
+$ns_ at 19.49779425761153 "$node_(0) setdest 170.0 10.314195940218866 50.00000000005081"
+$ns_ at 20.291510338806347 "$node_(0) setdest 170.0 10.0 50.026154493940176"
+$ns_ at 20.297790972274925 "$node_(0) setdest 184.68580405978113 10.0 50.0261544953949"
+$ns_ at 20.59135349387816 "$node_(0) setdest 190.0 10.0 50.00000000000561"
+$ns_ at 20.697637412682525 "$node_(0) setdest 190.0 30.0 50.000000000045475"
+$ns_ at 21.09763741268216 "$node_(0) setdest 210.0 30.0 50.000000000045475"
+$ns_ at 21.497637412681797 "$node_(0) setdest 210.0 64.68580405978113 50.00000000005158"
+$ns_ at 22.191353493876704 "$node_(0) setdest 210.0 90.0 50.05269707158819"
+$ns_ at 22.69710438086713 "$node_(0) setdest 180.31419594021887 90.0 50.05269707160862"
+$ns_ at 23.290195378886892 "$node_(0) setdest 150.0 90.0 50.039476861574876"
+$ns_ at 23.89600099160498 "$node_(0) setdest 150.0 55.314195940218866 50.039476861558356"
+$ns_ at 24.589169790226606 "$node_(0) setdest 150.0 30.314195940218866 50.08853512313983"
+$ns_ at 25.0882860039178 "$node_(0) setdest 150.0 30.0 50.1638254754786"
+$ns_ at 25.094549400643245 "$node_(0) setdest 169.68580405978113 30.0 50.163825474119314"
+$ns_ at 25.486979680306376 "$node_(0) setdest 210.0 30.0 50.026065720384665"
+$ns_ at 26.29284349069576 "$node_(0) setdest 210.0 39.685804059781134 50.02606572030907"
+$ns_ at 26.486458637526084 "$node_(0) setdest 210.0 49.685804059781134 50.000000000045475"
+$ns_ at 26.686458637525902 "$node_(0) setdest 210.0 54.685804059781134 50.27195602117583"
+$ns_ at 26.785917667882586 "$node_(0) setdest 210.0 70.0 50.036544130315455"
+$ns_ at 27.09197789259224 "$node_(0) setdest 190.0 70.0 50.03654413032888"
+$ns_ at 27.491685753069305 "$node_(0) setdest 190.0 84.68580405978113 50.03654413034288"
+$ns_ at 27.78518731907525 "$node_(0) setdest 190.0 90.0 50.00000000000561"
+$ns_ at 27.891471237879614 "$node_(0) setdest 204.68580405978113 90.0 50.0000000000599"
+$ns_ at 28.185187319074885 "$node_(0) setdest 210.0 90.0 50.00000000000561"
+$ns_ at 28.29147123787925 "$node_(0) setdest 210.0 60.314195940218866 50.00000000005261"
+$ns_ at 28.885187319074248 "$node_(0) setdest 210.0 50.0 50.00000000002494"
+$ns_ at 29.091471237878523 "$node_(0) setdest 195.31419594021887 50.0 50.0000000000599"
+$ns_ at 29.385187319073793 "$node_(0) setdest 190.31419594021887 50.0 50.000000000045475"
+$ns_ at 29.485187319073702 "$node_(0) setdest 190.0 50.0 50.59722417372707"
+$ns_ at 29.491397065662568 "$node_(0) setdest 190.0 54.685804059781134 50.597224172173355"
+$ns_ at 29.58400696939634 "$node_(0) setdest 190.0 89.68580405978113 50.04096849363424"
+$ns_ at 30.2834338800576 "$node_(0) setdest 190.0 114.68580405978113 50.000000000045475"
+$ns_ at 30.783433880057146 "$node_(0) setdest 190.0 144.68580405978113 50.000000000045475"
+$ns_ at 31.3834338800566 "$node_(0) setdest 190.0 149.68580405978113 50.000000000045475"
+$ns_ at 31.48343388005651 "$node_(0) setdest 190.0 150.0 49.99999999937131"
+$ns_ at 31.489717798860966 "$node_(0) setdest 204.68580405978113 150.0 50.0000000000599"
+$ns_ at 31.783433880056236 "$node_(0) setdest 210.0 150.0 50.00000000000561"
+$ns_ at 31.8897177988606 "$node_(0) setdest 210.0 154.68580405978113 50.00000000009068"
+$ns_ at 31.983433880056054 "$node_(0) setdest 210.0 170.0 50.00000000003164"
+$ns_ at 32.28971779886024 "$node_(0) setdest 190.31419594021887 170.0 50.00000000005623"
+$ns_ at 32.68343388005542 "$node_(0) setdest 160.31419594021887 170.0 50.000000000045475"
+$ns_ at 33.28343388005487 "$node_(0) setdest 150.0 170.0 50.00000000002494"
+$ns_ at 33.48971779885915 "$node_(0) setdest 150.0 130.31419594021887 50.00000000005081"
+$ns_ at 34.28343388005396 "$node_(0) setdest 150.0 125.31419594021887 50.110476619930395"
+$ns_ at 34.38321341394112 "$node_(0) setdest 150.0 90.0 50.00000000003948"
+$ns_ at 35.08949733274494 "$node_(0) setdest 170.0 90.0 50.000000000045475"
+$ns_ at 35.48949733274458 "$node_(0) setdest 170.0 45.314195940218866 50.000000000050214"
+$ns_ at 36.3832134139393 "$node_(0) setdest 170.0 35.314195940218866 50.000000000045475"
+$ns_ at 36.58321341393912 "$node_(0) setdest 170.0 30.0 50.16409295573003"
+$ns_ at 36.68914966489274 "$node_(0) setdest 174.68580405978113 30.0 50.16409295572343"
+$ns_ at 36.78255918918967 "$node_(0) setdest 179.68580405978113 30.0 50.35310362825518"
+$ns_ at 36.881857934246455 "$node_(0) setdest 209.68580405978113 30.0 50.232661607024355"
+$ns_ at 37.47907892633111 "$node_(0) setdest 210.0 30.0 50.19159724291911"
+$ns_ at 37.48533885742472 "$node_(0) setdest 210.0 70.0 50.19159724163442"
+$ns_ at 38.28228500375735 "$node_(0) setdest 205.31419594021887 70.0 50.19159724154828"
+$ns_ at 38.37564334095532 "$node_(0) setdest 190.31419594021887 70.0 50.05456821829346"
+$ns_ at 38.67531628857887 "$node_(0) setdest 190.0 70.0 50.090459271393534"
+$ns_ at 38.68158885913999 "$node_(0) setdest 190.0 90.0 50.09045927159107"
+$ns_ at 39.08086649186362 "$node_(0) setdest 194.68580405978113 90.0 50.09045927142169"
+$ns_ at 39.17441332948374 "$node_(0) setdest 210.0 90.0 50.01083775115091"
+$ns_ at 39.48063087409719 "$node_(0) setdest 210.0 104.68580405978113 50.01083775112181"
+$ns_ at 39.774283304653636 "$node_(0) setdest 210.0 119.68580405978113 50.16622061891001"
+$ns_ at 40.073289285469855 "$node_(0) setdest 210.0 129.68580405978113 50.00064082185439"
+$ns_ at 40.27328672221529 "$node_(0) setdest 210.0 130.0 49.99999999937131"
+$ns_ at 40.279570641019745 "$node_(0) setdest 200.31419594021887 130.0 50.000000000067345"
+$ns_ at 40.47328672221511 "$node_(0) setdest 195.31419594021887 130.0 50.000000000045475"
+$ns_ at 40.573286722215016 "$node_(0) setdest 190.0 130.0 50.00000000000561"
+$ns_ at 40.67957064101938 "$node_(0) setdest 190.0 139.68580405978113 50.000000000067345"
+$ns_ at 40.87328672221474 "$node_(0) setdest 190.0 164.68580405978113 50.129808751880184"
+$ns_ at 41.37199199603174 "$node_(0) setdest 190.0 170.0 50.00000000000561"
+$ns_ at 41.478275914836104 "$node_(0) setdest 194.68580405978113 170.0 50.00000000009068"
+$ns_ at 41.57199199603156 "$node_(0) setdest 210.0 170.0 50.22164628104912"
+$ns_ at 41.87692417317521 "$node_(0) setdest 210.0 110.31419594021887 50.22164628103643"
+$ns_ at 43.0653719537554 "$node_(0) setdest 210.0 110.0 49.99999999937131"
+$ns_ at 43.07165587255986 "$node_(0) setdest 205.31419594021887 110.0 50.00000000009068"
+$ns_ at 43.16537195375531 "$node_(0) setdest 190.0 110.0 50.11272866971771"
+$ns_ at 43.4709668863552 "$node_(0) setdest 190.0 114.68580405978113 50.112728669677175"
+$ns_ at 43.564472153064344 "$node_(0) setdest 190.0 154.68580405978113 50.000000000045475"
+$ns_ at 44.364472153063616 "$node_(0) setdest 190.0 164.68580405978113 50.000000000045475"
+$ns_ at 44.564472153063434 "$node_(0) setdest 190.0 170.0 50.00000000000561"
+$ns_ at 44.6707560718678 "$node_(0) setdest 210.0 170.0 50.000000000045475"
+$ns_ at 45.070756071867436 "$node_(0) setdest 210.0 179.68580405978113 50.000000000067345"
+$ns_ at 45.2644721530628 "$node_(0) setdest 210.0 210.0 50.081083118532455"
+$ns_ at 45.869774475867416 "$node_(0) setdest 190.0 210.0 50.081083118538814"
+$ns_ at 46.269126861131554 "$node_(0) setdest 190.0 200.31419594021887 50.081083118558716"
+$ns_ at 46.46252930885521 "$node_(0) setdest 190.0 190.0 50.00000000002494"
+$ns_ at 46.668813227659484 "$node_(0) setdest 194.68580405978113 190.0 50.00000000009068"
+$ns_ at 46.76252930885494 "$node_(0) setdest 199.68580405978113 190.0 50.000000000045475"
+$ns_ at 46.862529308854846 "$node_(0) setdest 210.0 190.0 50.00000000002494"
+$ns_ at 47.06881322765912 "$node_(0) setdest 210.0 170.0 50.000000000045475"
+$ns_ at 47.46881322765876 "$node_(0) setdest 150.0 170.0 50.000000000045475"
+$ns_ at 48.668813227657665 "$node_(0) setdest 150.0 174.68580405978113 50.00000000009068"
+$ns_ at 48.76252930885312 "$node_(0) setdest 150.0 189.68580405978113 50.000000000045475"
+$ns_ at 49.062529308852845 "$node_(0) setdest 150.0 210.0 50.2484922455739"
+$ns_ at 49.46680404491735 "$node_(0) setdest 154.68580405978113 210.0 50.24849224547915"
+$ns_ at 49.560056675004034 "$node_(0) setdest 190.0 210.0 50.116283087153136"
+$ns_ at 50.264701827534736 "$node_(0) setdest 190.0 170.0 50.116283087157974"
+$ns_ at 51.06284561506254 "$node_(0) setdest 210.0 170.0 50.116283087157974"
+$ns_ at 51.461917508826446 "$node_(0) setdest 210.0 165.31419594021887 50.11628308719444"
+$ns_ at 51.55541614382355 "$node_(0) setdest 210.0 130.0 50.37019790698176"
+$ns_ at 52.256509198995445 "$node_(0) setdest 190.31419594021887 130.0 50.37019790701125"
+$ns_ at 52.64733164714471 "$node_(0) setdest 185.31419594021887 130.0 50.079844902393454"
+$ns_ at 52.74717221194169 "$node_(0) setdest 150.0 130.0 50.00000000003948"
+$ns_ at 53.45345613074551 "$node_(0) setdest 150.0 115.31419594021887 50.0000000000599"
+$ns_ at 53.74717221194078 "$node_(0) setdest 150.0 100.31419594021887 50.000000000045475"
+$ns_ at 54.047172211940506 "$node_(0) setdest 150.0 95.31419594021887 50.03741587894379"
+$ns_ at 54.147097436138665 "$node_(0) setdest 150.0 90.31419594021887 50.000000000045475"
+$ns_ at 54.247097436138574 "$node_(0) setdest 150.0 60.314195940218866 50.000000000045475"
+$ns_ at 54.84709743613803 "$node_(0) setdest 150.0 55.314195940218866 50.000000000045475"
+$ns_ at 54.94709743613794 "$node_(0) setdest 150.0 30.0 50.000000000037105"
+$ns_ at 55.45338135494194 "$node_(0) setdest 174.68580405978113 30.0 50.00000000005406"
+$ns_ at 55.94709743613703 "$node_(0) setdest 210.0 30.0 50.00000000003948"
+$ns_ at 56.65338135494085 "$node_(0) setdest 210.0 44.685804059781134 50.0000000000599"
+$ns_ at 56.94709743613612 "$node_(0) setdest 210.0 50.0 50.00000000000561"
+$ns_ at 57.053381354940484 "$node_(0) setdest 190.0 50.0 50.000000000045475"
+$ns_ at 57.45338135494012 "$node_(0) setdest 190.0 30.314195940218866 50.00000000005623"
+$ns_ at 57.8470974361353 "$node_(0) setdest 190.0 20.314195940218866 50.232758488375026"
+$ns_ at 58.04617071622033 "$node_(0) setdest 190.0 10.0 50.00000000002494"
+$ns_ at 58.252454635024606 "$node_(0) setdest 204.68580405978113 10.0 50.0000000000599"
+$ns_ at 58.546170716219876 "$node_(0) setdest 209.68580405978113 10.0 50.000000000045475"
+$ns_ at 58.646170716219785 "$node_(0) setdest 210.0 10.0 50.04341386137547"
+$ns_ at 58.652449183573935 "$node_(0) setdest 210.0 24.685804059781134 50.043413860063254"
+$ns_ at 58.94591045903462 "$node_(0) setdest 210.0 50.0 50.17212398805952"
+$ns_ at 59.45045748491384 "$node_(0) setdest 200.31419594021887 50.0 50.17212398802743"
+$ns_ at 59.64350899020974 "$node_(0) setdest 150.31419594021887 50.0 50.000000000045475"
+$ns_ at 60.64350899020883 "$node_(0) setdest 130.0 50.0 50.00000000003505"
+$ns_ at 61.04979290901292 "$node_(0) setdest 130.0 30.0 50.000000000045475"
+$ns_ at 61.44979290901256 "$node_(0) setdest 150.0 30.0 50.000000000045475"
+$ns_ at 61.849792909012194 "$node_(0) setdest 150.0 34.685804059781134 50.00000000009068"
+$ns_ at 61.94350899020765 "$node_(0) setdest 150.0 39.685804059781134 50.13161210404934"
+$ns_ at 62.04324645705037 "$node_(0) setdest 150.0 44.685804059781134 50.02543485470445"
+$ns_ at 62.14319561320508 "$node_(0) setdest 150.0 84.68580405978113 50.257548547874336"
+$ns_ at 62.93909595366631 "$node_(0) setdest 150.0 109.68580405978113 50.000000000045475"
+$ns_ at 63.439095953665856 "$node_(0) setdest 150.0 110.0 49.99999999937131"
+$ns_ at 63.44537987247031 "$node_(0) setdest 174.68580405978113 110.0 50.00000000005406"
+$ns_ at 63.9390959536654 "$node_(0) setdest 179.68580405978113 110.0 50.000000000045475"
+$ns_ at 64.03909595366531 "$node_(0) setdest 184.68580405978113 110.0 50.11443711382031"
+$ns_ at 64.1388676020756 "$node_(0) setdest 194.68580405978113 110.0 50.266018524505625"
+$ns_ at 64.33780915928537 "$node_(0) setdest 199.68580405978113 110.0 50.22269450597553"
+$ns_ at 64.43736574519107 "$node_(0) setdest 210.0 110.0 50.32155630980134"
+$ns_ at 64.64233150333894 "$node_(0) setdest 210.0 70.0 50.32155630980632"
+$ns_ at 65.43721947845916 "$node_(0) setdest 190.0 70.0 50.32155630980632"
+$ns_ at 65.83466346601926 "$node_(0) setdest 190.0 74.68580405978113 50.32155630981729"
+$ns_ at 65.92778069854148 "$node_(0) setdest 190.0 90.0 50.00000000003164"
+$ns_ at 66.23406461734567 "$node_(0) setdest 210.0 90.0 50.000000000045475"
+$ns_ at 66.6340646173453 "$node_(0) setdest 210.0 65.31419594021887 50.00000000005406"
+$ns_ at 67.12778069854039 "$node_(0) setdest 210.0 60.314195940218866 50.09998445196074"
+$ns_ at 67.22758112871406 "$node_(0) setdest 210.0 50.314195940218866 50.000000000045475"
+$ns_ at 67.42758112871388 "$node_(0) setdest 210.0 50.0 49.99999999937131"
+$ns_ at 67.43386504751834 "$node_(0) setdest 200.31419594021887 50.0 50.000000000067345"
+$ns_ at 67.6275811287137 "$node_(0) setdest 195.31419594021887 50.0 50.168007808608984"
+$ns_ at 67.7272462383803 "$node_(0) setdest 150.0 50.0 50.0000000000408"
+$ns_ at 68.63353015718394 "$node_(0) setdest 150.0 59.685804059781134 50.000000000067345"
+$ns_ at 68.8272462383793 "$node_(0) setdest 150.0 74.68580405978113 50.000000000045475"
+$ns_ at 69.12724623837903 "$node_(0) setdest 150.0 89.68580405978113 50.000000000045475"
+$ns_ at 69.42724623837876 "$node_(0) setdest 150.0 90.0 49.99999999937131"
+$ns_ at 69.43353015718321 "$node_(0) setdest 170.0 90.0 50.000000000045475"
+$ns_ at 69.83353015718285 "$node_(0) setdest 170.0 109.68580405978113 50.00000000005623"
+$ns_ at 70.22724623837803 "$node_(0) setdest 170.0 124.68580405978113 50.000000000045475"
+$ns_ at 70.52724623837776 "$node_(0) setdest 170.0 184.68580405978113 50.20630609913808"
+$ns_ at 71.72231523790788 "$node_(0) setdest 170.0 190.0 50.00000000000561"
+$ns_ at 71.82859915671224 "$node_(0) setdest 179.68580405978113 190.0 50.000000000067345"
+$ns_ at 72.0223152379076 "$node_(0) setdest 210.0 190.0 50.021444549795284"
+$ns_ at 72.62833923847484 "$node_(0) setdest 210.0 155.31419594021887 50.02144454979793"
+$ns_ at 73.3217579186421 "$node_(0) setdest 210.0 150.31419594021887 50.15650808649834"
+$ns_ at 73.42144587920302 "$node_(0) setdest 210.0 150.0 50.183759096275544"
+$ns_ at 73.42770678802844 "$node_(0) setdest 195.31419594021887 150.0 50.18375909500558"
+$ns_ at 73.7203473618838 "$node_(0) setdest 190.0 150.0 50.00000000000561"
+$ns_ at 73.82663128068816 "$node_(0) setdest 190.0 170.0 50.000000000045475"
+$ns_ at 74.2266312806878 "$node_(0) setdest 210.0 170.0 50.000000000045475"
+$ns_ at 74.62663128068743 "$node_(0) setdest 210.0 150.0 50.000000000045475"
+$ns_ at 75.02663128068707 "$node_(0) setdest 195.31419594021887 150.0 50.0000000000599"
+$ns_ at 75.32034736188234 "$node_(0) setdest 190.0 150.0 50.00000000000561"
+$ns_ at 75.4266312806867 "$node_(0) setdest 190.0 140.31419594021887 50.000000000067345"
+$ns_ at 75.62034736188207 "$node_(0) setdest 190.0 135.31419594021887 50.08333718915494"
+$ns_ at 75.72018096484499 "$node_(0) setdest 190.0 100.31419594021887 50.34919108876659"
+$ns_ at 76.41532619445343 "$node_(0) setdest 190.0 90.0 50.245495055600195"
+$ns_ at 76.62060222823129 "$node_(0) setdest 210.0 90.0 50.2454950555717"
+$ns_ at 77.01864786352417 "$node_(0) setdest 210.0 70.0 50.2454950555717"
+$ns_ at 77.41669349881704 "$node_(0) setdest 200.31419594021887 70.0 50.245495055541355"
+$ns_ at 77.60946310033205 "$node_(0) setdest 190.0 70.0 50.212546832306806"
+$ns_ at 77.81487383113335 "$node_(0) setdest 190.0 55.314195940218866 50.212546832316995"
+$ns_ at 78.10734662899449 "$node_(0) setdest 190.0 50.314195940218866 50.32687984989574"
+$ns_ at 78.20669711555183 "$node_(0) setdest 190.0 50.0 49.99999999937131"
+$ns_ at 78.21298103435629 "$node_(0) setdest 199.68580405978113 50.0 50.000000000067345"
+$ns_ at 78.40669711555165 "$node_(0) setdest 210.0 50.0 50.00000000002494"
+$ns_ at 78.61298103435593 "$node_(0) setdest 210.0 35.314195940218866 50.0000000000599"
+$ns_ at 78.9066971155512 "$node_(0) setdest 210.0 10.0 50.05865532250819"
+$ns_ at 79.41238780534559 "$node_(0) setdest 190.0 10.0 50.05865532250727"
+$ns_ at 79.81191911259202 "$node_(0) setdest 190.0 19.685804059781134 50.0586553225049"
+$ns_ at 80.00540821047889 "$node_(0) setdest 190.0 30.0 50.033407596465196"
+$ns_ at 80.21155439231416 "$node_(0) setdest 210.0 30.0 50.033407596444384"
+$ns_ at 80.61128730999417 "$node_(0) setdest 210.0 20.314195940218866 50.03340759642223"
+$ns_ at 80.80487404583891 "$node_(0) setdest 210.0 10.314195940218866 50.000000000045475"
+$ns_ at 81.00487404583873 "$node_(0) setdest 210.0 10.0 50.07906805058731"
+$ns_ at 81.01114804318831 "$node_(0) setdest 180.31419594021887 10.0 50.07906805153294"
+$ns_ at 81.60392672727312 "$node_(0) setdest 175.31419594021887 10.0 50.35838568529393"
+$ns_ at 81.70321505695165 "$node_(0) setdest 170.0 10.0 50.00000000000561"
+$ns_ at 81.80949897575601 "$node_(0) setdest 170.0 19.685804059781134 50.000000000067345"
+$ns_ at 82.00321505695138 "$node_(0) setdest 170.0 30.0 50.00000000002494"
+$ns_ at 82.20949897575565 "$node_(0) setdest 190.0 30.0 50.000000000045475"
+$ns_ at 82.60949897575529 "$node_(0) setdest 190.0 10.0 50.000000000045475"
+$ns_ at 83.00949897575492 "$node_(0) setdest 209.68580405978113 10.0 50.00000000005623"
+$ns_ at 83.4032150569501 "$node_(0) setdest 210.0 10.0 50.25402113846055"
+$ns_ at 83.40946721216278 "$node_(0) setdest 210.0 14.685804059781134 50.25402113957457"
+$ns_ at 83.50270958269402 "$node_(0) setdest 210.0 29.685804059781134 50.000000000045475"
+$ns_ at 83.80270958269375 "$node_(0) setdest 210.0 30.0 49.99999999937131"
+$ns_ at 83.80899350149821 "$node_(0) setdest 190.0 30.0 50.000000000045475"
+$ns_ at 84.20899350149784 "$node_(0) setdest 190.0 39.685804059781134 50.000000000067345"
+$ns_ at 84.4027095826932 "$node_(0) setdest 190.0 44.685804059781134 50.32171184922719"
+$ns_ at 84.50207027246825 "$node_(0) setdest 190.0 59.685804059781134 50.000000000045475"
+$ns_ at 84.80207027246797 "$node_(0) setdest 190.0 70.0 50.00000000002494"
+$ns_ at 85.00835419127225 "$node_(0) setdest 199.68580405978113 70.0 50.000000000067345"
+$ns_ at 85.20207027246761 "$node_(0) setdest 209.68580405978113 70.0 50.000000000045475"
+$ns_ at 85.40207027246743 "$node_(0) setdest 210.0 70.0 50.39337373853123"
+$ns_ at 85.40830513861965 "$node_(0) setdest 210.0 40.314195940218866 50.3933737367722"
+$ns_ at 85.99738663601738 "$node_(0) setdest 210.0 35.314195940218866 50.000000000045475"
+$ns_ at 86.09738663601729 "$node_(0) setdest 210.0 10.0 50.11452015491073"
+$ns_ at 86.60251361043447 "$node_(0) setdest 190.31419594021887 10.0 50.11452015495504"
+$ns_ at 86.99532998379118 "$node_(0) setdest 190.0 10.0 50.27759349055499"
+$ns_ at 87.0015792077179 "$node_(0) setdest 190.0 24.685804059781134 50.277593491111354"
+$ns_ at 87.29367361876757 "$node_(0) setdest 190.0 70.0 50.10520179252645"
+$ns_ at 88.19805468738105 "$node_(0) setdest 199.68580405978113 70.0 50.10520179245636"
+$ns_ at 88.39136403877137 "$node_(0) setdest 210.0 70.0 50.056140550229955"
+$ns_ at 88.59741659949304 "$node_(0) setdest 210.0 55.314195940218866 50.05614055025426"
+$ns_ at 88.89080326291423 "$node_(0) setdest 210.0 50.0 50.00000000000561"
+$ns_ at 88.9970871817186 "$node_(0) setdest 200.31419594021887 50.0 50.000000000067345"
+$ns_ at 89.19080326291396 "$node_(0) setdest 190.0 50.0 50.22336763100995"
+$ns_ at 89.39616973726106 "$node_(0) setdest 190.0 40.314195940218866 50.22336763107361"
+$ns_ at 89.5890242692576 "$node_(0) setdest 190.0 30.0 50.00254077854052"
+$ns_ at 89.79529770615954 "$node_(0) setdest 210.0 30.0 50.00254077849782"
+$ns_ at 90.1952773809644 "$node_(0) setdest 210.0 50.0 50.00254077849782"
+$ns_ at 90.59525705576925 "$node_(0) setdest 200.31419594021887 50.0 50.002540778452335"
+$ns_ at 90.78896329367217 "$node_(0) setdest 195.31419594021887 50.0 50.000000000045475"
+$ns_ at 90.88896329367208 "$node_(0) setdest 190.31419594021887 50.0 50.000000000045475"
+$ns_ at 90.98896329367199 "$node_(0) setdest 180.31419594021887 50.0 50.000000000045475"
+$ns_ at 91.1889632936718 "$node_(0) setdest 170.0 50.0 50.00000000002494"
+$ns_ at 91.39524721247608 "$node_(0) setdest 170.0 74.68580405978113 50.00000000005406"
+$ns_ at 91.88896329367117 "$node_(0) setdest 170.0 89.68580405978113 50.03141905014988"
+$ns_ at 92.18877489775468 "$node_(0) setdest 170.0 129.68580405978113 50.000000000045475"
+$ns_ at 92.98877489775396 "$node_(0) setdest 170.0 130.0 50.05460246882012"
+$ns_ at 92.99505196169457 "$node_(0) setdest 174.68580405978113 130.0 50.05460246905168"
+$ns_ at 93.08866581194297 "$node_(0) setdest 189.68580405978113 130.0 50.06264040786431"
+$ns_ at 93.38829043976511 "$node_(0) setdest 194.68580405978113 130.0 50.000000000045475"
+$ns_ at 93.48829043976502 "$node_(0) setdest 210.0 130.0 50.202933689869916"
+$ns_ at 93.79333627702272 "$node_(0) setdest 210.0 170.0 50.20293368986951"
+$ns_ at 94.59010246298112 "$node_(0) setdest 205.31419594021887 170.0 50.202933689868175"
+$ns_ at 94.68343971870263 "$node_(0) setdest 170.0 170.0 50.285254177126966"
+$ns_ at 95.38571708645395 "$node_(0) setdest 170.0 160.31419594021887 50.285254177030914"
+$ns_ at 95.5783342705231 "$node_(0) setdest 170.0 150.0 50.00000000002494"
+$ns_ at 95.78461818932738 "$node_(0) setdest 189.68580405978113 150.0 50.00000000005623"
+$ns_ at 96.17833427052256 "$node_(0) setdest 190.0 150.0 49.99999999937131"
+$ns_ at 96.18461818932701 "$node_(0) setdest 190.0 190.0 50.000000000045475"
+$ns_ at 96.98461818932628 "$node_(0) setdest 209.68580405978113 190.0 50.00000000005623"
+$ns_ at 97.37833427052146 "$node_(0) setdest 210.0 190.0 49.99999999937131"
+$ns_ at 97.38461818932592 "$node_(0) setdest 210.0 170.0 50.000000000045475"
+$ns_ at 97.78461818932556 "$node_(0) setdest 190.31419594021887 170.0 50.00000000005623"
+$ns_ at 98.17833427052074 "$node_(0) setdest 185.31419594021887 170.0 50.000000000045475"
+$ns_ at 98.27833427052065 "$node_(0) setdest 130.0 170.0 50.000000000041645"
+$ns_ at 99.3846181893241 "$node_(0) setdest 130.0 150.0 50.000000000045475"
+$ns_ at 99.78461818932374 "$node_(0) setdest 140.76909053382604 150.0 50.00000000005991"
+$node_(1) set X_ 195.41843780583298
+$node_(1) set Y_ 150.0
+$ns_ at 0.0 "$node_(1) setdest 200.66722776717626 150.0 50.1186137321417"
+$ns_ at 0.10472735717303294 "$node_(1) setdest 205.66722776717626 150.0 50.12394666822694"
+$ns_ at 0.20448007682807656 "$node_(1) setdest 210.0 150.0 50.07421529881941"
+$ns_ at 0.29100708892337934 "$node_(1) setdest 210.0 150.66722776717626 50.074215298892376"
+$ns_ at 0.30433186622030917 "$node_(1) setdest 210.0 165.66722776717626 50.000000000045475"
+$ns_ at 0.6043318662200363 "$node_(1) setdest 210.0 170.0 49.999999999944244"
+$ns_ at 0.6909873108766078 "$node_(1) setdest 190.0 170.0 50.000000000045475"
+$ns_ at 1.090987310876244 "$node_(1) setdest 190.0 169.33277223282374 50.00000000070285"
+$ns_ at 1.1043318662195816 "$node_(1) setdest 190.0 150.0 50.21107796711817"
+$ns_ at 1.4893618838082148 "$node_(1) setdest 210.0 150.0 50.211077967129654"
+$ns_ at 1.8876803587290851 "$node_(1) setdest 210.0 170.0 50.211077967129654"
+$ns_ at 2.2859988336499555 "$node_(1) setdest 170.0 170.0 50.21107796710099"
+$ns_ at 3.082635783492151 "$node_(1) setdest 170.0 169.33277223282374 50.21107796746239"
+$ns_ at 3.095924240824388 "$node_(1) setdest 170.0 159.33277223282374 50.000000000045475"
+$ns_ at 3.295924240824206 "$node_(1) setdest 170.0 144.33277223282374 50.19464432982333"
+$ns_ at 3.594760903585211 "$node_(1) setdest 170.0 134.33277223282374 50.25387620884101"
+$ns_ at 3.7937505289514775 "$node_(1) setdest 170.0 130.0 50.1079462418332"
+$ns_ at 3.8802192940433997 "$node_(1) setdest 180.66722776717626 130.0 50.10794624184838"
+$ns_ at 4.093104246775056 "$node_(1) setdest 190.0 130.0 50.10473676990816"
+$ns_ at 4.279369514980772 "$node_(1) setdest 190.0 129.33277223282374 50.10473677068463"
+$ns_ at 4.292686175444032 "$node_(1) setdest 190.0 119.33277223282374 50.32619142001604"
+$ns_ at 4.491389866660029 "$node_(1) setdest 190.0 110.0 49.99999999999848"
+$ns_ at 4.6780453113165095 "$node_(1) setdest 210.0 110.0 50.000000000045475"
+$ns_ at 5.078045311316146 "$node_(1) setdest 210.0 145.66722776717626 50.000000000057774"
+$ns_ at 5.791389866658847 "$node_(1) setdest 210.0 155.66722776717626 50.01009714770057"
+$ns_ at 5.991349486222589 "$node_(1) setdest 210.0 165.66722776717626 50.000000000045475"
+$ns_ at 6.191349486222407 "$node_(1) setdest 210.0 170.0 49.999999999944244"
+$ns_ at 6.2780049308789785 "$node_(1) setdest 204.33277223282374 170.0 50.00000000012287"
+$ns_ at 6.391349486222225 "$node_(1) setdest 194.33277223282374 170.0 50.275754456935864"
+$ns_ at 6.590252518270518 "$node_(1) setdest 179.33277223282374 170.0 50.000000000045475"
+$ns_ at 6.890252518270245 "$node_(1) setdest 170.0 170.0 50.07957383813818"
+$ns_ at 7.076611377133304 "$node_(1) setdest 170.0 185.66722776717626 50.0795738382259"
+$ns_ at 7.389458044275216 "$node_(1) setdest 170.0 190.0 50.08741531801948"
+$ns_ at 7.475962253073249 "$node_(1) setdest 180.66722776717626 190.0 50.08741531791583"
+$ns_ at 7.6889344677397276 "$node_(1) setdest 190.0 190.0 49.99999999999848"
+$ns_ at 7.875589912396208 "$node_(1) setdest 190.0 190.66722776717626 50.00000000070285"
+$ns_ at 7.888934467739546 "$node_(1) setdest 190.0 210.0 50.00000000002279"
+$ns_ at 8.275589912395844 "$node_(1) setdest 195.66722776717626 210.0 50.00000000012287"
+$ns_ at 8.388934467739091 "$node_(1) setdest 210.0 210.0 50.00000000001487"
+$ns_ at 8.67558991239548 "$node_(1) setdest 210.0 204.33277223282374 50.00000000012287"
+$ns_ at 8.788934467738727 "$node_(1) setdest 210.0 194.33277223282374 50.000000000045475"
+$ns_ at 8.988934467738545 "$node_(1) setdest 210.0 184.33277223282374 50.03890482368185"
+$ns_ at 9.188778969436498 "$node_(1) setdest 210.0 164.33277223282374 50.000000000045475"
+$ns_ at 9.588778969436135 "$node_(1) setdest 210.0 150.0 50.1733961870809"
+$ns_ at 9.874443750416503 "$node_(1) setdest 150.0 150.0 50.17339618709069"
+$ns_ at 11.070296623845024 "$node_(1) setdest 150.0 149.33277223282374 50.17339618730111"
+$ns_ at 11.083595061221786 "$node_(1) setdest 150.0 144.33277223282374 50.247334367659555"
+$ns_ at 11.183102827413222 "$node_(1) setdest 150.0 94.33277223282374 50.0109997444354"
+$ns_ at 12.18288288091162 "$node_(1) setdest 150.0 90.0 50.14933910079607"
+$ns_ at 12.269280275384062 "$node_(1) setdest 155.66722776717626 90.0 50.14933910061448"
+$ns_ at 12.38228730336914 "$node_(1) setdest 170.0 90.0 50.00000000001487"
+$ns_ at 12.668942748025529 "$node_(1) setdest 170.0 39.33277223282374 50.00000000005413"
+$ns_ at 13.682287303367957 "$node_(1) setdest 170.0 29.332772232823743 50.000000000045475"
+$ns_ at 13.882287303367775 "$node_(1) setdest 170.0 14.332772232823743 50.2485967502627"
+$ns_ at 14.180803102217851 "$node_(1) setdest 170.0 10.0 49.999999999944244"
+$ns_ at 14.267458546874423 "$node_(1) setdest 190.0 10.0 50.000000000045475"
+$ns_ at 14.667458546874059 "$node_(1) setdest 190.0 20.667227767176257 50.000000000086594"
+$ns_ at 14.880803102217214 "$node_(1) setdest 190.0 30.0 50.29700493087855"
+$ns_ at 15.066356342328618 "$node_(1) setdest 210.0 30.0 50.29700493093136"
+$ns_ at 15.463994333446863 "$node_(1) setdest 210.0 50.0 50.29700493093136"
+$ns_ at 15.861632324565107 "$node_(1) setdest 190.0 50.0 50.29700493093136"
+$ns_ at 16.259270315683352 "$node_(1) setdest 190.0 90.0 50.29700493093136"
+$ns_ at 17.054546297919842 "$node_(1) setdest 200.66722776717626 90.0 50.29700493097756"
+$ns_ at 17.266631048926683 "$node_(1) setdest 210.0 90.0 50.160990095057876"
+$ns_ at 17.452687428897207 "$node_(1) setdest 210.0 95.66722776717626 50.16099009520778"
+$ns_ at 17.565668208511397 "$node_(1) setdest 210.0 105.66722776717626 50.000000000045475"
+$ns_ at 17.765668208511215 "$node_(1) setdest 210.0 110.0 50.000428691125805"
+$ns_ at 17.852322910205658 "$node_(1) setdest 150.0 110.0 50.000428691092786"
+$ns_ at 19.052312621707642 "$node_(1) setdest 150.0 130.0 50.000428691092786"
+$ns_ at 19.452309192208304 "$node_(1) setdest 170.0 130.0 50.000428691092786"
+$ns_ at 19.852305762708966 "$node_(1) setdest 170.0 150.0 50.000428691092786"
+$ns_ at 20.252302333209627 "$node_(1) setdest 175.66722776717626 150.0 50.00042869106754"
+$ns_ at 20.365645916765516 "$node_(1) setdest 190.0 150.0 50.095894633308724"
+$ns_ at 20.651752639436836 "$node_(1) setdest 190.0 185.66722776717626 50.095894633280594"
+$ns_ at 21.363731695370916 "$node_(1) setdest 190.0 190.0 49.999999999944244"
+$ns_ at 21.450387140027487 "$node_(1) setdest 190.66722776717626 190.0 50.00000000070285"
+$ns_ at 21.463731695370825 "$node_(1) setdest 210.0 190.0 50.14609466461715"
+$ns_ at 21.84926066551543 "$node_(1) setdest 210.0 210.0 50.146094664613955"
+$ns_ at 22.248095313233534 "$node_(1) setdest 209.33277223282374 210.0 50.14609466452139"
+$ns_ at 22.261400990807033 "$node_(1) setdest 189.33277223282374 210.0 50.000000000045475"
+$ns_ at 22.66140099080667 "$node_(1) setdest 164.33277223282374 210.0 50.27645838787196"
+$ns_ at 23.15865160872272 "$node_(1) setdest 144.33277223282374 210.0 50.13514618882005"
+$ns_ at 23.557573353653424 "$node_(1) setdest 139.33277223282374 210.0 50.000000000045475"
+$ns_ at 23.657573353653333 "$node_(1) setdest 130.0 210.0 50.177566240339544"
+$ns_ at 23.84356826994963 "$node_(1) setdest 130.0 194.33277223282374 50.17756624030696"
+$ns_ at 24.15580397488884 "$node_(1) setdest 130.0 189.33277223282374 50.05080606990031"
+$ns_ at 24.2557024658945 "$node_(1) setdest 130.0 174.33277223282374 50.000000000045475"
+$ns_ at 24.55570246589423 "$node_(1) setdest 130.0 170.0 50.00573855770331"
+$ns_ at 24.642347966146644 "$node_(1) setdest 140.66722776717626 170.0 50.00573855764801"
+$ns_ at 24.855668038499516 "$node_(1) setdest 150.0 170.0 49.99999999999848"
+$ns_ at 25.042323483155997 "$node_(1) setdest 150.0 170.66722776717626 50.00000000070285"
+$ns_ at 25.055668038499334 "$node_(1) setdest 150.0 190.0 50.08240616475188"
+$ns_ at 25.441687275858385 "$node_(1) setdest 175.66722776717626 190.0 50.08240616473204"
+$ns_ at 25.954187168190856 "$node_(1) setdest 210.0 190.0 50.0000000000327"
+$ns_ at 26.640842612846882 "$node_(1) setdest 210.0 190.66722776717626 50.00000000070285"
+$ns_ at 26.65418716819022 "$node_(1) setdest 210.0 210.0 50.00000000002279"
+$ns_ at 27.040842612846518 "$node_(1) setdest 150.0 210.0 50.000000000045475"
+$ns_ at 28.240842612845427 "$node_(1) setdest 150.0 204.33277223282374 50.00000000012287"
+$ns_ at 28.354187168188673 "$node_(1) setdest 150.0 190.0 50.00000000001487"
+$ns_ at 28.640842612845063 "$node_(1) setdest 170.0 190.0 50.000000000045475"
+$ns_ at 29.0408426128447 "$node_(1) setdest 170.0 210.0 50.000000000045475"
+$ns_ at 29.440842612844335 "$node_(1) setdest 185.66722776717626 210.0 50.00000000007347"
+$ns_ at 29.7541871681874 "$node_(1) setdest 205.66722776717626 210.0 50.00644285456036"
+$ns_ at 30.15413563199172 "$node_(1) setdest 210.0 210.0 49.999999999944244"
+$ns_ at 30.240791076648293 "$node_(1) setdest 210.0 194.33277223282374 50.00000000007347"
+$ns_ at 30.554135631991358 "$node_(1) setdest 210.0 189.33277223282374 50.22184474686376"
+$ns_ at 30.653693902405394 "$node_(1) setdest 210.0 174.33277223282374 50.101911690652265"
+$ns_ at 30.95308367604548 "$node_(1) setdest 210.0 170.0 49.999999999944244"
+$ns_ at 31.039739120702052 "$node_(1) setdest 190.0 170.0 50.000000000045475"
+$ns_ at 31.439739120701688 "$node_(1) setdest 190.0 175.66722776717626 50.00000000012287"
+$ns_ at 31.553083676044935 "$node_(1) setdest 190.0 190.0 50.10552903814562"
+$ns_ at 31.839135385466307 "$node_(1) setdest 210.0 190.0 50.10552903813946"
+$ns_ at 32.2382929312289 "$node_(1) setdest 210.0 190.66722776717626 50.10552903757946"
+$ns_ at 32.25160938112958 "$node_(1) setdest 210.0 195.66722776717626 50.000000000045475"
+$ns_ at 32.35160938112949 "$node_(1) setdest 210.0 210.0 50.00000000001487"
+$ns_ at 32.63826482578588 "$node_(1) setdest 204.33277223282374 210.0 50.00000000012287"
+$ns_ at 32.75160938112913 "$node_(1) setdest 190.0 210.0 50.08148884767557"
+$ns_ at 33.03779840151583 "$node_(1) setdest 190.0 194.33277223282374 50.08148884768439"
+$ns_ at 33.35063310606756 "$node_(1) setdest 190.0 190.0 50.09011851512145"
+$ns_ at 33.43713264652115 "$node_(1) setdest 205.66722776717626 190.0 50.090118515172016"
+$ns_ at 33.74991345502394 "$node_(1) setdest 210.0 190.0 49.999999999944244"
+$ns_ at 33.836568899680515 "$node_(1) setdest 210.0 154.33277223282374 50.000000000057774"
+$ns_ at 34.549913455023216 "$node_(1) setdest 210.0 150.0 50.20269217980406"
+$ns_ at 34.63621903037574 "$node_(1) setdest 199.33277223282374 150.0 50.202692179724856"
+$ns_ at 34.84870221213396 "$node_(1) setdest 190.0 150.0 50.116336137251466"
+$ns_ at 35.03492436946135 "$node_(1) setdest 190.0 160.66722776717626 50.11633613721932"
+$ns_ at 35.24777368346486 "$node_(1) setdest 190.0 200.66722776717626 50.000000000045475"
+$ns_ at 36.04777368346413 "$node_(1) setdest 190.0 210.0 49.99999999999848"
+$ns_ at 36.23442912812061 "$node_(1) setdest 210.0 210.0 50.000000000045475"
+$ns_ at 36.634429128120246 "$node_(1) setdest 210.0 174.33277223282374 50.000000000057774"
+$ns_ at 37.34777368346295 "$node_(1) setdest 210.0 169.33277223282374 50.170889603230606"
+$ns_ at 37.44743306840792 "$node_(1) setdest 210.0 154.33277223282374 50.195272915138894"
+$ns_ at 37.74626598889745 "$node_(1) setdest 210.0 150.0 50.153939191387266"
+$ns_ at 37.83265545905033 "$node_(1) setdest 194.33277223282374 150.0 50.153939191414544"
+$ns_ at 38.14503825529255 "$node_(1) setdest 190.0 150.0 49.999999999944244"
+$ns_ at 38.23169369994912 "$node_(1) setdest 190.0 119.33277223282374 50.00000000005978"
+$ns_ at 38.84503825529191 "$node_(1) setdest 190.0 114.33277223282374 50.04450643980275"
+$ns_ at 38.94494932157477 "$node_(1) setdest 190.0 110.0 50.036520020554384"
+$ns_ at 39.03154151925446 "$node_(1) setdest 195.66722776717626 110.0 50.03652002060693"
+$ns_ at 39.14480334811151 "$node_(1) setdest 210.0 110.0 50.595322031926976"
+$ns_ at 39.4280859058108 "$node_(1) setdest 210.0 130.0 50.59532203193804"
+$ns_ at 39.82337936767226 "$node_(1) setdest 204.33277223282374 130.0 50.59532203196602"
+$ns_ at 39.93539027183442 "$node_(1) setdest 190.0 130.0 50.00000000001487"
+$ns_ at 40.22204571649081 "$node_(1) setdest 190.0 129.33277223282374 50.00000000070285"
+$ns_ at 40.23539027183415 "$node_(1) setdest 190.0 119.33277223282374 50.000000000045475"
+$ns_ at 40.43539027183397 "$node_(1) setdest 190.0 110.0 50.143134818090296"
+$ns_ at 40.62151290390875 "$node_(1) setdest 210.0 110.0 50.14313481808566"
+$ns_ at 41.02037109401908 "$node_(1) setdest 210.0 110.66722776717626 50.14313481802085"
+$ns_ at 41.033677556999464 "$node_(1) setdest 210.0 120.66722776717626 50.026451773600684"
+$ns_ at 41.23357180585117 "$node_(1) setdest 210.0 150.66722776717626 50.11125914800754"
+$ns_ at 41.832239660342566 "$node_(1) setdest 210.0 165.66722776717626 50.10071434729569"
+$ns_ at 42.13163658901749 "$node_(1) setdest 210.0 170.0 49.999999999944244"
+$ns_ at 42.21829203367406 "$node_(1) setdest 194.33277223282374 170.0 50.00000000007347"
+$ns_ at 42.531636589017126 "$node_(1) setdest 190.0 170.0 50.094007042496834"
+$ns_ at 42.618129414978284 "$node_(1) setdest 190.0 150.0 50.09400704258953"
+$ns_ at 43.01737876995594 "$node_(1) setdest 210.0 150.0 50.09400704258953"
+$ns_ at 43.416628124933595 "$node_(1) setdest 210.0 155.66722776717626 50.0940070426604"
+$ns_ at 43.529759976461264 "$node_(1) setdest 210.0 165.66722776717626 50.000000000045475"
+$ns_ at 43.72975997646108 "$node_(1) setdest 210.0 170.0 50.07367252074779"
+$ns_ at 43.816287926473706 "$node_(1) setdest 174.33277223282374 170.0 50.07367252080704"
+$ns_ at 44.528582950417785 "$node_(1) setdest 170.0 170.0 50.016042032508516"
+$ns_ at 44.615210601402396 "$node_(1) setdest 170.0 170.66722776717626 50.01604203301842"
+$ns_ at 44.6285508766432 "$node_(1) setdest 170.0 180.66722776717626 50.23899505678924"
+$ns_ at 44.82759944416921 "$node_(1) setdest 170.0 190.0 50.155404000084765"
+$ns_ at 45.01367654630576 "$node_(1) setdest 180.66722776717626 190.0 50.155404000079685"
+$ns_ at 45.22636006426046 "$node_(1) setdest 185.66722776717626 190.0 50.21537081871098"
+$ns_ at 45.32593117004899 "$node_(1) setdest 190.0 190.0 50.19734248996902"
+$ns_ at 45.41224594326013 "$node_(1) setdest 190.0 184.33277223282374 50.19734249008905"
+$ns_ at 45.525144903365344 "$node_(1) setdest 190.0 179.33277223282374 50.000000000045475"
+$ns_ at 45.62514490336525 "$node_(1) setdest 190.0 170.0 50.039030256883294"
+$ns_ at 45.81165475747139 "$node_(1) setdest 195.66722776717626 170.0 50.03903025677287"
+$ns_ at 45.92491090448493 "$node_(1) setdest 210.0 170.0 50.00000000001487"
+$ns_ at 46.21156634914132 "$node_(1) setdest 210.0 180.66722776717626 50.000000000086594"
+$ns_ at 46.42491090448448 "$node_(1) setdest 210.0 185.66722776717626 50.15317019131568"
+$ns_ at 46.52460549968009 "$node_(1) setdest 210.0 195.66722776717626 50.000000000045475"
+$ns_ at 46.72460549967991 "$node_(1) setdest 210.0 210.0 50.082854884847315"
+$ns_ at 47.01078671410505 "$node_(1) setdest 189.33277223282374 210.0 50.08285488482249"
+$ns_ at 47.423447450293224 "$node_(1) setdest 130.0 210.0 50.06607854392904"
+$ns_ at 48.6085367154883 "$node_(1) setdest 130.0 204.33277223282374 50.06607854399111"
+$ns_ at 48.72173167566871 "$node_(1) setdest 130.0 184.33277223282374 50.000000000045475"
+$ns_ at 49.12173167566834 "$node_(1) setdest 130.0 170.0 50.14446539854782"
+$ns_ at 49.40756127059785 "$node_(1) setdest 150.0 170.0 50.14446539855977"
+$ns_ at 49.8064088770293 "$node_(1) setdest 150.0 175.66722776717626 50.144465398589965"
+$ns_ at 49.919426888531234 "$node_(1) setdest 150.0 180.66722776717626 50.01682108137802"
+$ns_ at 50.01939325768262 "$node_(1) setdest 150.0 210.0 50.000000000030525"
+$ns_ at 50.60604870233874 "$node_(1) setdest 155.66722776717626 210.0 50.00000000012287"
+$ns_ at 50.719393257681986 "$node_(1) setdest 170.0 210.0 50.00000000001487"
+$ns_ at 51.006048702338376 "$node_(1) setdest 170.0 159.33277223282374 50.00000000005413"
+$ns_ at 52.019393257680804 "$node_(1) setdest 170.0 130.0 50.031020246654414"
+$ns_ at 52.605684964070406 "$node_(1) setdest 180.66722776717626 130.0 50.031020246701885"
+$ns_ at 52.81889724146504 "$node_(1) setdest 190.0 130.0 50.212394624865034"
+$ns_ at 53.004763147732774 "$node_(1) setdest 190.0 150.0 50.212394624921615"
+$ns_ at 53.40307117803877 "$node_(1) setdest 205.66722776717626 150.0 50.212394624955316"
+$ns_ at 53.71509030965353 "$node_(1) setdest 210.0 150.0 49.999999999944244"
+$ns_ at 53.801745754310105 "$node_(1) setdest 210.0 170.0 50.000000000045475"
+$ns_ at 54.20174575430974 "$node_(1) setdest 194.33277223282374 170.0 50.00000000007347"
+$ns_ at 54.515090309652805 "$node_(1) setdest 184.33277223282374 170.0 50.271295487877246"
+$ns_ at 54.71401098402475 "$node_(1) setdest 170.0 170.0 50.00000000001487"
+$ns_ at 55.00066642868114 "$node_(1) setdest 170.0 210.0 50.000000000045475"
+$ns_ at 55.800666428680415 "$node_(1) setdest 170.66722776717626 210.0 50.00000000070285"
+$ns_ at 55.81401098402375 "$node_(1) setdest 185.66722776717626 210.0 50.15474088233156"
+$ns_ at 56.11308540323353 "$node_(1) setdest 190.0 210.0 50.242203970933836"
+$ns_ at 56.1993231056108 "$node_(1) setdest 190.0 170.0 50.24220397113581"
+$ns_ at 56.99546652366189 "$node_(1) setdest 195.66722776717626 170.0 50.24220397113831"
+$ns_ at 57.10826467579773 "$node_(1) setdest 210.0 170.0 50.00000000001487"
+$ns_ at 57.39492012045412 "$node_(1) setdest 210.0 154.33277223282374 50.00000000007347"
+$ns_ at 57.70826467579718 "$node_(1) setdest 210.0 150.0 49.999999999944244"
+$ns_ at 57.79492012045375 "$node_(1) setdest 209.33277223282374 150.0 50.00000000070285"
+$ns_ at 57.80826467579709 "$node_(1) setdest 170.0 150.0 50.000000000034326"
+$ns_ at 58.594920120453025 "$node_(1) setdest 170.0 134.33277223282374 50.00000000007347"
+$ns_ at 58.90826467579609 "$node_(1) setdest 170.0 130.0 49.999999999944244"
+$ns_ at 58.99492012045266 "$node_(1) setdest 175.66722776717626 130.0 50.00000000012287"
+$ns_ at 59.10826467579591 "$node_(1) setdest 190.0 130.0 50.00000000001487"
+$ns_ at 59.3949201204523 "$node_(1) setdest 190.0 90.0 50.000000000045475"
+$ns_ at 60.19492012045157 "$node_(1) setdest 210.0 90.0 50.000000000045475"
+$ns_ at 60.59492012045121 "$node_(1) setdest 210.0 90.66722776717626 50.00000000070285"
+$ns_ at 60.608264675794544 "$node_(1) setdest 210.0 105.66722776717626 50.000000000045475"
+$ns_ at 60.90826467579427 "$node_(1) setdest 210.0 115.66722776717626 50.000000000045475"
+$ns_ at 61.10826467579409 "$node_(1) setdest 210.0 125.66722776717626 50.000000000045475"
+$ns_ at 61.30826467579391 "$node_(1) setdest 210.0 130.0 49.999999999944244"
+$ns_ at 61.39492012045048 "$node_(1) setdest 194.33277223282374 130.0 50.00000000007347"
+$ns_ at 61.708264675793544 "$node_(1) setdest 190.0 130.0 50.19975742172592"
+$ns_ at 61.79457529670799 "$node_(1) setdest 190.0 150.66722776717626 50.199757421761994"
+$ns_ at 62.206275050424665 "$node_(1) setdest 190.0 165.66722776717626 50.091699943376135"
+$ns_ at 62.505725857982725 "$node_(1) setdest 190.0 170.0 49.999999999944244"
+$ns_ at 62.592381302639296 "$node_(1) setdest 210.0 170.0 50.000000000045475"
+$ns_ at 62.99238130263893 "$node_(1) setdest 210.0 150.0 50.000000000045475"
+$ns_ at 63.39238130263857 "$node_(1) setdest 204.33277223282374 150.0 50.00000000012287"
+$ns_ at 63.505725857981815 "$node_(1) setdest 194.33277223282374 150.0 50.27022390930776"
+$ns_ at 63.70465077261997 "$node_(1) setdest 174.33277223282374 150.0 50.000000000045475"
+$ns_ at 64.1046507726196 "$node_(1) setdest 170.0 150.0 49.999999999944244"
+$ns_ at 64.19130621727618 "$node_(1) setdest 170.0 149.33277223282374 50.00000000070285"
+$ns_ at 64.20465077261952 "$node_(1) setdest 170.0 129.33277223282374 50.000000000045475"
+$ns_ at 64.60465077261915 "$node_(1) setdest 170.0 124.33277223282374 50.000000000045475"
+$ns_ at 64.70465077261906 "$node_(1) setdest 170.0 119.33277223282374 50.000000000045475"
+$ns_ at 64.80465077261897 "$node_(1) setdest 170.0 109.33277223282374 50.06735514924175"
+$ns_ at 65.00438171447104 "$node_(1) setdest 170.0 99.33277223282374 50.000000000045475"
+$ns_ at 65.20438171447086 "$node_(1) setdest 170.0 90.0 50.07335008311138"
+$ns_ at 65.39076373639136 "$node_(1) setdest 190.0 90.0 50.07335008312027"
+$ns_ at 65.79017779530295 "$node_(1) setdest 190.0 74.33277223282374 50.07335008314375"
+$ns_ at 66.10306334702182 "$node_(1) setdest 190.0 70.0 50.36882463522923"
+$ns_ at 66.18908425904829 "$node_(1) setdest 190.66722776717626 70.0 50.36882463563926"
+$ns_ at 66.20233109917217 "$node_(1) setdest 210.0 70.0 50.44552553599903"
+$ns_ at 66.5855716745732 "$node_(1) setdest 210.0 90.0 50.445525535996154"
+$ns_ at 66.9820389486772 "$node_(1) setdest 204.33277223282374 90.0 50.44552553598635"
+$ns_ at 67.09438246590616 "$node_(1) setdest 150.0 90.0 50.0000000000374"
+$ns_ at 68.18103791056183 "$node_(1) setdest 150.0 89.33277223282374 50.00000000070285"
+$ns_ at 68.19438246590516 "$node_(1) setdest 150.0 50.0 50.02735212573105"
+$ns_ at 68.98060781187132 "$node_(1) setdest 150.66722776717626 50.0 50.02735212656275"
+$ns_ at 68.99394507116676 "$node_(1) setdest 170.0 50.0 50.00000000002279"
+$ns_ at 69.38060051582306 "$node_(1) setdest 170.0 60.66722776717626 50.000000000086594"
+$ns_ at 69.59394507116622 "$node_(1) setdest 170.0 70.0 49.99999999999848"
+$ns_ at 69.7806005158227 "$node_(1) setdest 170.66722776717626 70.0 50.00000000070285"
+$ns_ at 69.79394507116604 "$node_(1) setdest 190.0 70.0 50.00000000002279"
+$ns_ at 70.18060051582233 "$node_(1) setdest 190.0 100.66722776717626 50.00000000005978"
+$ns_ at 70.79394507116513 "$node_(1) setdest 190.0 130.0 50.30281162117056"
+$ns_ at 71.37706898188662 "$node_(1) setdest 190.66722776717626 130.0 50.3028116216659"
+$ns_ at 71.39033320600583 "$node_(1) setdest 205.66722776717626 130.0 50.000000000045475"
+$ns_ at 71.69033320600556 "$node_(1) setdest 210.0 130.0 50.13350186686144"
+$ns_ at 71.77675789351952 "$node_(1) setdest 210.0 124.33277223282374 50.13350186697103"
+$ns_ at 71.88980062056089 "$node_(1) setdest 210.0 109.33277223282374 50.07152534419843"
+$ns_ at 72.18937208152374 "$node_(1) setdest 210.0 89.33277223282374 50.000000000045475"
+$ns_ at 72.58937208152338 "$node_(1) setdest 210.0 70.0 50.26201995616282"
+$ns_ at 72.9740118602208 "$node_(1) setdest 209.33277223282374 70.0 50.262019956328594"
+$ns_ at 72.98728684932303 "$node_(1) setdest 194.33277223282374 70.0 50.000000000045475"
+$ns_ at 73.28728684932275 "$node_(1) setdest 184.33277223282374 70.0 50.18367378318602"
+$ns_ at 73.4865548431967 "$node_(1) setdest 134.33277223282374 70.0 50.000000000045475"
+$ns_ at 74.48655484319579 "$node_(1) setdest 109.33277223282374 70.0 50.157075005265675"
+$ns_ at 74.98498901220137 "$node_(1) setdest 90.0 70.0 50.00000000002279"
+$ns_ at 75.37164445685767 "$node_(1) setdest 90.0 95.66722776717626 50.00000000006256"
+$ns_ at 75.88498901220055 "$node_(1) setdest 90.0 110.0 50.309655426348804"
+$ns_ at 76.16988009546003 "$node_(1) setdest 110.0 110.0 50.3096554263802"
+$ns_ at 76.56741809945743 "$node_(1) setdest 110.0 150.0 50.3096554263802"
+$ns_ at 77.36249410745222 "$node_(1) setdest 110.66722776717626 150.0 50.30965542705461"
+$ns_ at 77.37575652719079 "$node_(1) setdest 115.66722776717626 150.0 50.000000000045475"
+$ns_ at 77.4757565271907 "$node_(1) setdest 120.66722776717626 150.0 50.000000000045475"
+$ns_ at 77.5757565271906 "$node_(1) setdest 130.0 150.0 50.209588878691385"
+$ns_ at 77.76163281977233 "$node_(1) setdest 130.0 150.66722776717626 50.20958887897538"
+$ns_ at 77.77492167120636 "$node_(1) setdest 130.0 160.66722776717626 50.157316550543364"
+$ns_ at 77.97429437867413 "$node_(1) setdest 130.0 165.66722776717626 50.000000000045475"
+$ns_ at 78.07429437867404 "$node_(1) setdest 130.0 175.66722776717626 50.000000000045475"
+$ns_ at 78.27429437867386 "$node_(1) setdest 130.0 205.66722776717626 50.18233028343295"
+$ns_ at 78.87211436492316 "$node_(1) setdest 130.0 210.0 49.999999999944244"
+$ns_ at 78.95876980957974 "$node_(1) setdest 140.66722776717626 210.0 50.000000000086594"
+$ns_ at 79.17211436492289 "$node_(1) setdest 170.0 210.0 50.000000000030525"
+$ns_ at 79.75876980957901 "$node_(1) setdest 170.0 209.33277223282374 50.00000000070285"
+$ns_ at 79.77211436492234 "$node_(1) setdest 170.0 170.0 50.09572627769915"
+$ns_ at 80.55726661553126 "$node_(1) setdest 190.0 170.0 50.095726277662465"
+$ns_ at 80.95650226867156 "$node_(1) setdest 190.0 175.66722776717626 50.09572627765955"
+$ns_ at 81.06963023762773 "$node_(1) setdest 190.0 185.66722776717626 50.145400130257144"
+$ns_ at 81.2690503234985 "$node_(1) setdest 190.0 190.66722776717626 50.000000000045475"
+$ns_ at 81.36905032349841 "$node_(1) setdest 190.0 210.0 50.00000000002279"
+$ns_ at 81.75570576815471 "$node_(1) setdest 205.66722776717626 210.0 50.00000000007347"
+$ns_ at 82.06905032349778 "$node_(1) setdest 210.0 210.0 50.16590435736209"
+$ns_ at 82.1554191887326 "$node_(1) setdest 210.0 190.0 50.16590435748834"
+$ns_ at 82.55409634318949 "$node_(1) setdest 204.33277223282374 190.0 50.16590435758486"
+$ns_ at 82.66706605518311 "$node_(1) setdest 159.33277223282374 190.0 50.000000000045475"
+$ns_ at 83.5670660551823 "$node_(1) setdest 150.0 190.0 50.16502088595776"
+$ns_ at 83.75310748540596 "$node_(1) setdest 150.0 174.33277223282374 50.16502088604965"
+$ns_ at 84.06542127478451 "$node_(1) setdest 150.0 170.0 49.999999999944244"
+$ns_ at 84.15207671944108 "$node_(1) setdest 150.66722776717626 170.0 50.00000000070285"
+$ns_ at 84.16542127478442 "$node_(1) setdest 195.66722776717626 170.0 50.000000000045475"
+$ns_ at 85.0654212747836 "$node_(1) setdest 210.0 170.0 50.00000000001487"
+$ns_ at 85.35207671943999 "$node_(1) setdest 210.0 175.66722776717626 50.00000000012287"
+$ns_ at 85.46542127478324 "$node_(1) setdest 210.0 185.66722776717626 50.000000000045475"
+$ns_ at 85.66542127478306 "$node_(1) setdest 210.0 210.0 50.00000000002745"
+$ns_ at 86.15207671943926 "$node_(1) setdest 179.33277223282374 210.0 50.00000000005978"
+$ns_ at 86.76542127478206 "$node_(1) setdest 169.33277223282374 210.0 50.000000000045475"
+$ns_ at 86.96542127478187 "$node_(1) setdest 149.33277223282374 210.0 50.1117017881755"
+$ns_ at 87.36452965239278 "$node_(1) setdest 139.33277223282374 210.0 50.000000000045475"
+$ns_ at 87.5645296523926 "$node_(1) setdest 130.0 210.0 50.481952029625056"
+$ns_ at 87.74940309443673 "$node_(1) setdest 130.0 194.33277223282374 50.48195202959622"
+$ns_ at 88.05975614413637 "$node_(1) setdest 130.0 184.33277223282374 50.000000000045475"
+$ns_ at 88.25975614413619 "$node_(1) setdest 130.0 174.33277223282374 50.000000000045475"
+$ns_ at 88.45975614413601 "$node_(1) setdest 130.0 154.33277223282374 50.000000000045475"
+$ns_ at 88.85975614413564 "$node_(1) setdest 130.0 149.33277223282374 50.242940788851016"
+$ns_ at 88.95927261195175 "$node_(1) setdest 130.0 139.33277223282374 50.046005856753105"
+$ns_ at 89.15908875769219 "$node_(1) setdest 130.0 130.0 50.16402361407134"
+$ns_ at 89.34513388646064 "$node_(1) setdest 155.66722776717626 130.0 50.16402361413084"
+$ns_ at 89.8567999355123 "$node_(1) setdest 170.66722776717626 130.0 50.2227599340266"
+$ns_ at 90.1554693041353 "$node_(1) setdest 180.66722776717626 130.0 50.000000000045475"
+$ns_ at 90.35546930413511 "$node_(1) setdest 190.66722776717626 130.0 50.08824582364059"
+$ns_ at 90.555116942729 "$node_(1) setdest 210.0 130.0 50.055819460244216"
+$ns_ at 90.94134121078196 "$node_(1) setdest 210.0 110.0 50.05581946022788"
+$ns_ at 91.34089515307414 "$node_(1) setdest 204.33277223282374 110.0 50.05581946017216"
+$ns_ at 91.45411331288642 "$node_(1) setdest 174.33277223282374 110.0 50.11263434864155"
+$ns_ at 92.05276473861841 "$node_(1) setdest 169.33277223282374 110.0 50.0493894697903"
+$ns_ at 92.15266605715533 "$node_(1) setdest 164.33277223282374 110.0 50.345561585623955"
+$ns_ at 92.25197967771146 "$node_(1) setdest 154.33277223282374 110.0 50.00314057336296"
+$ns_ at 92.45196711620702 "$node_(1) setdest 150.0 110.0 49.999999999944244"
+$ns_ at 92.53862256086359 "$node_(1) setdest 150.0 130.66722776717626 50.0000000000667"
+$ns_ at 92.95196711620656 "$node_(1) setdest 150.0 170.0 50.000000000034326"
+$ns_ at 93.7386225608625 "$node_(1) setdest 150.66722776717626 170.0 50.00000000070285"
+$ns_ at 93.75196711620583 "$node_(1) setdest 170.0 170.0 50.00000000002279"
+$ns_ at 94.13862256086213 "$node_(1) setdest 170.0 164.33277223282374 50.00000000012287"
+$ns_ at 94.25196711620538 "$node_(1) setdest 170.0 150.0 50.00000000001487"
+$ns_ at 94.53862256086177 "$node_(1) setdest 185.66722776717626 150.0 50.00000000007347"
+$ns_ at 94.85196711620483 "$node_(1) setdest 210.0 150.0 50.02074448777581"
+$ns_ at 95.33842073623782 "$node_(1) setdest 210.0 144.33277223282374 50.02074448774428"
+$ns_ at 95.45171828558887 "$node_(1) setdest 210.0 139.33277223282374 50.56746789123036"
+$ns_ at 95.55059608605052 "$node_(1) setdest 210.0 130.0 49.99999999999848"
+$ns_ at 95.737251530707 "$node_(1) setdest 204.33277223282374 130.0 50.00000000012287"
+$ns_ at 95.85059608605025 "$node_(1) setdest 189.33277223282374 130.0 50.088912978875534"
+$ns_ at 96.15006355515516 "$node_(1) setdest 170.0 130.0 50.00000000002279"
+$ns_ at 96.53671899981146 "$node_(1) setdest 170.0 150.0 50.000000000045475"
+$ns_ at 96.93671899981109 "$node_(1) setdest 175.66722776717626 150.0 50.00000000012287"
+$ns_ at 97.05006355515434 "$node_(1) setdest 190.0 150.0 50.08112275024659"
+$ns_ at 97.33625466760805 "$node_(1) setdest 190.0 170.0 50.08112275024419"
+$ns_ at 97.7356067368446 "$node_(1) setdest 210.0 170.0 50.08112275024419"
+$ns_ at 98.13495880608116 "$node_(1) setdest 210.0 130.0 50.08112275024419"
+$ns_ at 98.93366294455427 "$node_(1) setdest 209.33277223282374 130.0 50.08112275019265"
+$ns_ at 98.94698588402798 "$node_(1) setdest 170.0 130.0 50.02495631053431"
+$ns_ at 99.73324888421257 "$node_(1) setdest 170.0 135.66722776717626 50.02495631052576"
+$ns_ at 99.8465368945408 "$node_(1) setdest 170.0 143.34038304014302 50.00000000004556"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/mobility/ns2-mobility-trace.cc	Sun Jun 20 17:21:22 2010 +0400
@@ -0,0 +1,140 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 INRIA
+ *               2009,2010 Contributors
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Martín Giachino <martin.giachino@gmail.com>
+ *
+ *
+ * This example demonstrates the use of Ns2TransmobilityHelper class to work with mobility.
+ *
+ * Detailed example description.
+ *
+ *  - intended usage: this should be used in order to load ns2 movement trace files into ns3.
+ *  - behavior:
+ *      - Ns2TransmobilityHelperTrace object is created, whith the specified trace file. At this moment, only
+ *      specify the file, and no movements are scheduled.
+ *      - A log file is created, using the log file name argument.
+ *      - A node container is created with the correct node number specified in the command line.
+ *      - Use Install method of Ns2TransmobilityHelperTrace to set mobility to nodes. At this moment, file is
+ *      read line by line, and the movement is scheduled in the simulator.
+ *      - A callback is configured, so each time a node changes its course a log message is printed.
+ *  - expected output: example prints out messages generated by each read line from the ns2 movement trace file.
+ *                     For each line, it shows if the line is correct, or of it has errors and in this case it will
+ *                     be ignored.
+ *
+ * Usage of ns2-mobility-trace:
+ *
+ *          ./waf --run "examples/mobility/ns2-mobility-trace \
+ *                --traceFile=/home/mgiachino/ns-3-dev/examples/mobility/default.ns_movements
+ *                 --nodeNum=2  --duration=100.0 --logFile=ns2-mobility-trace.log"
+ *
+ *          NOTE: ns2-traces-file could be an absolute or relative path. You could use the file default.ns_movements
+ *                included in the same directory that the present file.
+ *          NOTE 2: Number of nodes present in the trace file must match with the command line argument.
+ *                  Note that you must know it before to be able to load it.
+ *          NOTE 3: Duration must be a positive number. Note that you must know it before to be able to load it.
+ */
+
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+
+#include "ns3/core-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/simulator-module.h"
+#include "ns3/helper-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/ns2-mobility-helper.h"
+
+using namespace ns3;
+
+// Prints actual position and velocity when a course change event occurs
+static void
+CourseChange (std::ostream *os, std::string foo, Ptr<const MobilityModel> mobility)
+{
+  Vector pos = mobility->GetPosition (); // Get position
+  Vector vel = mobility->GetVelocity (); // Get velocity
+
+  // Prints position and velocities
+  *os << Simulator::Now () << " POS: x=" << pos.x << ", y=" << pos.y
+      << ", z=" << pos.z << "; VEL:" << vel.x << ", y=" << vel.y
+      << ", z=" << vel.z << std::endl;
+}
+
+// Example to use ns2 traces file in ns3
+int main (int argc, char *argv[])
+{
+  std::string traceFile;
+  std::string logFile;
+
+  int    nodeNum;
+  double duration;
+
+  // Enable logging from the ns2 helper
+  LogComponentEnable ("Ns2MobilityHelper",LOG_LEVEL_DEBUG);
+
+  // Parse command line attribute
+  CommandLine cmd;
+  cmd.AddValue ("traceFile", "Ns2 movement trace file", traceFile);
+  cmd.AddValue ("nodeNum", "Number of nodes", nodeNum);
+  cmd.AddValue ("duration", "Duration of Simulation", duration);
+  cmd.AddValue ("logFile", "Log file", logFile);
+  cmd.Parse (argc,argv);
+
+  // Check command line arguments
+  if (traceFile.empty () || nodeNum <= 0 || duration <= 0 || logFile.empty ())
+    {
+      std::cout << "Usage of " << argv[0] << " :\n\n"
+      "./waf --run \"ns2-mobility-trace"
+      " --traceFile=/home/mgiachino/ns-3-dev/examples/mobility/default.ns_movements"
+      " --nodeNum=2 --duration=100.0 --logFile=main-ns2-mob.log\" \n\n"
+      "NOTE: ns2-traces-file could be an absolute or relative path. You could use the file default.ns_movements\n"
+      "      included in the same directory that the present file.\n\n"
+      "NOTE 2: Number of nodes present in the trace file must match with the command line argument and must\n"
+      "        be a positive number. Note that you must know it before to be able to load it.\n\n"
+      "NOTE 3: Duration must be a positive number. Note that you must know it before to be able to load it.\n\n";
+
+      return 0;
+    }
+
+  // Create Ns2MobilityHelper with the specified trace log file as parameter
+  Ns2MobilityHelper ns2 = Ns2MobilityHelper (traceFile);
+
+  // open log file for output
+  std::ofstream os;
+  os.open (logFile.c_str ());
+
+
+
+  // Create all nodes.
+  NodeContainer stas;
+  stas.Create (nodeNum);
+
+  ns2.Install (); // configure movements for each node, while reading trace file
+
+  // Configure callback for logging
+  Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange",
+                   MakeBoundCallback (&CourseChange, &os));
+
+  Simulator::Stop (Seconds (duration));
+  Simulator::Run ();
+  Simulator::Destroy ();
+
+  os.close (); // close log file
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/mobility/waf	Sun Jun 20 17:21:22 2010 +0400
@@ -0,0 +1,1 @@
+exec "`dirname "$0"`"/../../waf "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/mobility/wscript	Sun Jun 20 17:21:22 2010 +0400
@@ -0,0 +1,6 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def build(bld):
+    obj = bld.create_ns3_program('ns2-mobility-trace', ['core', 'simulator', 'mobility', 'wifi', 'mesh'])
+    obj.source = 'ns2-mobility-trace.cc'
+
--- a/samples/main-ns2-mob.cc	Sat Jun 19 17:10:57 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-#include "ns3/core-module.h"
-#include "ns3/mobility-module.h"
-#include "ns3/simulator-module.h"
-#include "ns3/helper-module.h"
-#include "ns3/mobility-module.h"
-#include <iostream>
-#include <fstream>
-
-using namespace ns3;
-
-static void 
-CourseChange (std::ostream *os, std::string foo, Ptr<const MobilityModel> mobility)
-{
-  Vector pos = mobility->GetPosition ();
-  Vector vel = mobility->GetVelocity ();
-  *os << Simulator::Now () << " POS: x=" << pos.x << ", y=" << pos.y
-      << ", z=" << pos.z << "; VEL:" << vel.x << ", y=" << vel.y
-      << ", z=" << vel.z << std::endl;
-}
-
-int main (int argc, char *argv[])
-{
-  Ns2MobilityHelper mobility(argv[1]);
-  std::ofstream os;
-  os.open (argv[2]);
-  NodeContainer stas;
-  stas.Create (1);
-
-  mobility.Install ();
-
-  Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange",
-                   MakeBoundCallback (&CourseChange, &os));
-
-  Simulator::Stop (Seconds (10.0));
-  Simulator::Run ();
-  Simulator::Destroy ();
-
-  os.close ();
-  return 0;
-}
--- a/samples/ns2-mob.tr	Sat Jun 19 17:10:57 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-
-$node_(0) set X_ 0.0
-$node_(0) set Y_ 25.0
-$node_(0) set Z_ 0.0
-$ns_ at 3.0 "$node_(0) setdest 25 0 0"
-$ns_ at 4.8 "$node_(0) setdest 0 0 0"
-$ns_ at 5.0 "$node_(0) setdest 25 0 0"
--- a/samples/wscript	Sat Jun 19 17:10:57 2010 +0100
+++ b/samples/wscript	Sun Jun 20 17:21:22 2010 +0400
@@ -50,10 +50,6 @@
                                  ['core', 'simulator', 'mobility', 'wifi'])
     obj.source = 'main-propagation-loss.cc'
 
-    obj = bld.create_ns3_program('main-ns2-mob',
-                                 ['core', 'simulator', 'mobility', 'wifi'])
-    obj.source = 'main-ns2-mob.cc'
-
     obj = bld.create_ns3_program('sample-random-variable',
                                  ['core', 'simulator'])
     obj.source = 'sample-random-variable.cc'
--- a/src/helper/ns2-mobility-helper.cc	Sat Jun 19 17:10:57 2010 +0100
+++ b/src/helper/ns2-mobility-helper.cc	Sun Jun 20 17:21:22 2010 +0400
@@ -1,6 +1,7 @@
 /* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
 /*
  * Copyright (c) 2007 INRIA
+ *               2009,2010 Contributors
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -16,26 +17,123 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ * Contributors: Thomas Waldecker <twaldecker@rocketmail.com>
+ *               Martín Giachino <martin.giachino@gmail.com>
+ *
+ * Brief description: Implementation of a ns2 movement trace file reader.
+ *
+ * This implementation is based on the ns2 movement documentation of ns2
+ * as described in http://www.isi.edu/nsnam/ns/doc/node174.html
+ *
+ * Valid trace files use the following ns2 statements:
+ *
+ * $node set X_ x1
+ * $node set Y_ y1
+ * $node set Z_ z1
+ * $ns at $time $node setdest x2 y2 speed
+ * $ns at $time $node set X_ x1
+ * $ns at $time $node set Y_ Y1
+ * $ns at $time $node set Z_ Z1
+ *
  */
+
+
 #include <fstream>
 #include <sstream>
+#include <map>
+#include <algorithm>
 #include "ns3/log.h"
 #include "ns3/simulator.h"
 #include "ns3/node-list.h"
 #include "ns3/node.h"
 #include "ns3/constant-velocity-mobility-model.h"
+#include "ns3/test.h"
+#include "ns3/node-container.h"
+#include "ns3/names.h"
+#include "ns3/config.h"
 #include "ns2-mobility-helper.h"
 
 NS_LOG_COMPONENT_DEFINE ("Ns2MobilityHelper");
 
+using namespace std;
+
 namespace ns3 {
 
+// Constants definitions
+#define  NS2_AT       "at"
+#define  NS2_X_COORD  "X_"
+#define  NS2_Y_COORD  "Y_"
+#define  NS2_Z_COORD  "Z_"
+#define  NS2_SETDEST  "setdest"
+#define  NS2_SET      "set"
+#define  NS2_NODEID   "$node_("
+#define  NS2_NS_SCH   "$ns_"
+
+
+// Type to maintain line parsed and its values
+struct ParseResult
+{
+  vector<string> tokens; // tokens from a line
+  vector<int> ivals;     // int values for each tokens
+  vector<bool> has_ival; // points if a tokens has an int value
+  vector<double> dvals;  // double values for each tokens
+  vector<bool> has_dval; // points if a tokens has a double value
+  vector<string> svals;  // string value for each token
+};
+
+
+// Parses a line of ns2 mobility
+static ParseResult ParseNs2Line (const string& str);
+
+// Put out blank spaces at the start and end of a line
+static string TrimNs2Line (const string& str);
+
+// Checks if a string represents a number or it has others characters than digits an point.
+static bool IsNumber (const string& s);
+
+// Check if s string represents a numeric value
+template<class T>
+static bool IsVal (const string& str, T& ret);
+
+// Checks if the value between brackets is a correct nodeId number
+static bool HasNodeIdNumber (string str);
+
+// Gets nodeId number in string format from the string like $node_(4)
+static string GetNodeIdFromToken (string str);
+
+// Get node id number in int format
+static int GetNodeIdInt (ParseResult pr);
+
+// Get node id number in string format
+static string GetNodeIdString (ParseResult pr);
+
+// Add one coord to a vector position
+static Vector SetOneInitialCoord (Vector actPos, string& coord, double value);
+
+// Check if this corresponds to a line like this: $node_(0) set X_ 123
+static bool IsSetInitialPos (ParseResult pr);
+
+// Check if this corresponds to a line like this: $ns_ at 1 "$node_(0) setdest 2 3 4"
+static bool IsSchedSetPos (ParseResult pr);
+
+// Check if this corresponds to a line like this: $ns_ at 1 "$node_(0) set X_ 2"
+static bool IsSchedMobilityPos (ParseResult pr);
+
+// Set waypoints and speed for movement.
+static Vector SetMovement (Ptr<ConstantVelocityMobilityModel> model, Vector lastPos, double at,
+                           double xFinalPosition, double yFinalPosition, double speed);
+
+// Set initial position for a node
+static Vector SetInitialPosition (Ptr<ConstantVelocityMobilityModel> model, string coord, double coordVal);
+
+// Schedule a set of position for a node
+static Vector SetSchedPosition (Ptr<ConstantVelocityMobilityModel> model, double at, string coord, double coordVal);
+
 
 Ns2MobilityHelper::Ns2MobilityHelper (std::string filename)
   : m_filename (filename)
-{}
-
-
+{
+}
 
 Ptr<ConstantVelocityMobilityModel>
 Ns2MobilityHelper::GetMobilityModel (std::string idString, const ObjectStore &store) const
@@ -58,90 +156,873 @@
   return model;
 }
 
-double
-Ns2MobilityHelper::ReadDouble (std::string valueString) const
+
+void
+Ns2MobilityHelper::ConfigNodesMovements (const ObjectStore &store) const
 {
-  std::istringstream iss;
-  iss.str (valueString);
-  double value;
-  iss >> value;
-  return value;
-}
+  map<int, Vector> last_pos;    // Vector containing lasts positions for each node
 
-void 
-Ns2MobilityHelper::LayoutObjectStore (const ObjectStore &store) const
-{
   std::ifstream file (m_filename.c_str (), std::ios::in);
-  if (file.is_open())
+  if (file.is_open ())
     {
-      while (!file.eof() )
+      while (!file.eof () )
         {
+          int         iNodeId = 0;
+          std::string nodeId;
           std::string line;
+
           getline (file, line);
-          std::string::size_type startNodeId = line.find_first_of ("(");
-          std::string::size_type endNodeId = line.find_first_of (")");
-          if (startNodeId == std::string::npos ||
-              endNodeId == std::string::npos)
-            {
-              continue;
-            }
-          Ptr<ConstantVelocityMobilityModel> model = GetMobilityModel (line.substr (startNodeId + 1, 
-                                                                               endNodeId - (startNodeId + 1)), 
-                                                                  store);
-          if (model == 0)
+
+          // ignore empty lines
+          if (line.empty ())
             {
               continue;
             }
-          if (startNodeId == 6)
+
+          ParseResult pr = ParseNs2Line (line); // Parse line and obtain tokens
+
+          // Check if the line corresponds with one of the three types of line
+          if (pr.tokens.size () != 4 && pr.tokens.size () != 7 && pr.tokens.size () != 8)
+            {
+              NS_LOG_ERROR ("Line has not correct number of parameters (corrupted file?): " << line << "\n");
+              continue;
+            }
+
+          // Get the node Id
+          nodeId  = GetNodeIdString (pr);
+          iNodeId = GetNodeIdInt (pr);
+          if (iNodeId == -1)
+            {
+        	  NS_LOG_ERROR ("Node number couldn't be obtained (corrupted file?): " << line << "\n");
+              continue;
+            }
+
+          // get mobility model of node
+          Ptr<ConstantVelocityMobilityModel> model = GetMobilityModel (nodeId,store);
+
+          // if model not exists, continue
+          if (model == 0)
             {
-              double value = ReadDouble (line.substr (endNodeId + 9, std::string::npos));
-              std::string coordinate = line.substr (endNodeId + 6, 1);
-              Vector position = model->GetPosition ();
-              if (coordinate == "X")
+              NS_LOG_ERROR ("Unknown node ID (corrupted file?): " << nodeId << "\n");
+              continue;
+            }
+
+
+          /*
+           * In this case a initial position is being seted
+           * line like $node_(0) set X_ 151.05190721688197
+           */
+          if (IsSetInitialPos (pr))
+            {
+              //                                            coord         coord value
+              last_pos[iNodeId] = SetInitialPosition (model, pr.tokens[2], pr.dvals[3]);
+
+              // Log new position
+              NS_LOG_DEBUG ("Positions after parse for node " << iNodeId << " " << nodeId <<
+                            " x=" << last_pos[iNodeId].x << " y=" << last_pos[iNodeId].y << " z=" << last_pos[iNodeId].z);
+            }
+
+          else // NOW EVENTS TO BE SCHEDULED
+            {
+
+              // This is a scheduled event, so time at should be present
+              double at;
+
+              if (!IsNumber (pr.tokens[2]))
                 {
-                  position.x = value;
-                  NS_LOG_DEBUG ("X=" << value);
+                  NS_LOG_WARN ("Time is not a number: " << pr.tokens[2]);
+                  continue;
                 }
-              else if (coordinate == "Y")
+
+              at = pr.dvals[2]; // set time at
+
+              if ( at < 0 )
                 {
-                  position.y = value;
-                  NS_LOG_DEBUG ("Y=" << value);
+                  NS_LOG_WARN ("Time is less than cero: " << at);
+                  continue;
                 }
-              else if (coordinate == "Z")
+
+
+
+              /*
+               * In this case a new waypoint is added
+               * line like $ns_ at 1 "$node_(0) setdest 2 3 4"
+               */
+              if (IsSchedMobilityPos (pr))
                 {
-                  position.z = value;
-                  NS_LOG_DEBUG ("Z=" << value);
+                  //                                     last position     time  X coord     Y coord      velocity
+                  last_pos[iNodeId] = SetMovement (model, last_pos[iNodeId], at, pr.dvals[5], pr.dvals[6], pr.dvals[7]);
+
+                  // Log new position
+                  NS_LOG_DEBUG ("Positions after parse for node " << iNodeId << " " << nodeId <<
+                                " x=" << last_pos[iNodeId].x << " y=" << last_pos[iNodeId].y << " z=" << last_pos[iNodeId].z);
+                }
+
+
+              /*
+               * Scheduled set position
+               * line like $ns_ at 4.634906291962 "$node_(0) set X_ 28.675920486450"
+               */
+              else if (IsSchedSetPos (pr))
+                {
+                  //                                         time  coordinate   coord value
+                  last_pos[iNodeId] = SetSchedPosition (model, at, pr.tokens[5], pr.dvals[6]);
+
+                  // Log new position
+                  NS_LOG_DEBUG ("Positions after parse for node " << iNodeId << " " << nodeId <<
+                                " x=" << last_pos[iNodeId].x << " y=" << last_pos[iNodeId].y << " z=" << last_pos[iNodeId].z);
                 }
               else
                 {
-                  continue;
+                  NS_LOG_WARN ("Format Line is not correct: " << line << "\n");
                 }
-              model->SetPosition (position);
-            }
-          else 
-            {
-              std::string::size_type atEnd = line.find_first_of (" ", 8);
-              std::string atStr = line.substr (8, atEnd-8);
-              NS_LOG_DEBUG (atStr);
-              double at = ReadDouble (atStr);
-              std::string::size_type xSpeedEnd = line.find_first_of (" ", endNodeId + 10);
-              std::string::size_type ySpeedEnd = line.find_first_of (" ", xSpeedEnd + 1);
-              double xSpeed = ReadDouble (line.substr (endNodeId + 10, xSpeedEnd - endNodeId - 10));
-              double ySpeed = ReadDouble (line.substr (xSpeedEnd + 1, ySpeedEnd - xSpeedEnd - 1));
-              double zSpeed = ReadDouble (line.substr (ySpeedEnd + 1, std::string::npos));
-              NS_LOG_DEBUG ("at=" << at << "xSpeed=" << xSpeed << ", ySpeed=" << ySpeed << ", zSpeed=" << zSpeed);
-              Simulator::Schedule (Seconds (at), &ConstantVelocityMobilityModel::SetVelocity, model,
-                                   Vector (xSpeed, ySpeed, zSpeed));
             }
         }
-      file.close();
+      file.close ();
+    }
+}
+
+
+ParseResult
+ParseNs2Line (const string& str)
+{
+  ParseResult ret;
+  istringstream s;
+  string line;
+
+  // ignore comments (#)
+  size_t pos_sharp = str.find_first_of ('#');
+  if (pos_sharp != string::npos)
+    {
+      line = str.substr (0, pos_sharp);
+    }
+  else
+    {
+      line = str;
+    }
+
+  line = TrimNs2Line (line);
+
+  // If line hasn't a correct node Id
+  if (!HasNodeIdNumber (line))
+    {
+      NS_LOG_WARN ("Line has no node Id: " << line);
+      return ret;
+    }
+
+  s.str (line);
+
+  while (!s.eof ())
+    {
+      string x;
+      s >> x;
+      ret.tokens.push_back (x);
+      int ii;
+      double d;
+      if (HasNodeIdNumber (x))
+        {
+          x = GetNodeIdFromToken (x);
+        }
+      ret.has_ival.push_back (IsVal<int> (x, ii));
+      ret.ivals.push_back (ii);
+      ret.has_dval.push_back (IsVal<double> (x, d));
+      ret.dvals.push_back (d);
+      ret.svals.push_back (x);
+    }
+
+  size_t tokensLength   = ret.tokens.size ();                 // number of tokens in line
+  size_t lasTokenLength = ret.tokens[tokensLength - 1].size (); // length of the last token
+
+  // if it is a scheduled set _[XYZ] or a setdest I need to remove the last "
+  // and re-calculate values
+  if ( (tokensLength == 7 || tokensLength == 8)
+       && (ret.tokens[tokensLength - 1][lasTokenLength - 1] == '"') )
+    {
+
+      // removes " from the last position
+      ret.tokens[tokensLength - 1] = ret.tokens[tokensLength - 1].substr (0,lasTokenLength - 1);
+
+      string x;
+      x = ret.tokens[tokensLength - 1];
+
+      if (HasNodeIdNumber (x))
+        {
+          x = GetNodeIdFromToken (x);
+        }
+
+      // Re calculate values
+      int ii;
+      double d;
+      ret.has_ival[tokensLength - 1] = IsVal<int> (x, ii);
+      ret.ivals[tokensLength - 1] = ii;
+      ret.has_dval[tokensLength - 1] = IsVal<double> (x, d);
+      ret.dvals[tokensLength - 1] = d;
+      ret.svals[tokensLength - 1] = x;
+
+    }
+  else if ( (tokensLength == 9 && ret.tokens[tokensLength - 1] == "\"")
+            || (tokensLength == 8 && ret.tokens[tokensLength - 1] == "\""))
+    {
+      // if the line has the " character in this way: $ns_ at 1 "$node_(0) setdest 2 2 1  "
+      // or in this: $ns_ at 4 "$node_(0) set X_ 2  " we need to ignore this last token
+
+      ret.tokens.erase (ret.tokens.begin () + tokensLength - 1);
+      ret.has_ival.erase (ret.has_ival.begin () + tokensLength - 1);
+      ret.ivals.erase (ret.ivals.begin () + tokensLength - 1);
+      ret.has_dval.erase (ret.has_dval.begin () + tokensLength - 1);
+      ret.dvals.erase (ret.dvals.begin () + tokensLength - 1);
+      ret.svals.erase (ret.svals.begin () + tokensLength - 1);
+
+    }
+
+
+
+  return ret;
+}
+
+
+string
+TrimNs2Line (const string& s)
+{
+  string ret = s;
+
+  while (ret.size () > 0 && isblank (ret[0]))
+    {
+      ret.erase (0, 1);    // Removes blank spaces at the begining of the line
+    }
+
+  while (ret.size () > 0 && isblank (ret[ret.size () - 1]))
+    {
+      ret.erase (ret.size () - 1, 1); // Removes blank spaces from at end of line
+    }
+
+  return ret;
+}
+
+
+bool
+IsNumber (const string& s)
+{
+  char *endp;
+  double unused;
+  unused = strtod (s.c_str (), &endp); // declared with warn_unused_result
+  return endp == s.c_str () + s.size ();
+}
+
+
+template<class T>
+bool IsVal (const string& str, T& ret)
+{
+  if (str.size () == 0)
+    {
+      return false;
+    }
+  else if (IsNumber (str))
+    {
+      string s2 = str;
+      istringstream s (s2);
+      s >> ret;
+      return true;
+    }
+  else
+    {
+      return false;
+    }
+}
+
+
+bool
+HasNodeIdNumber (string str)
+{
+
+  // find brackets
+  std::string::size_type startNodeId = str.find_first_of ("("); // index of left bracket
+  std::string::size_type endNodeId   = str.find_first_of (")"); // index of right bracket
+
+  // Get de nodeId in a string and in a int value
+  std::string nodeId;     // node id
+
+  // if no brackets, continue!
+  if (startNodeId == std::string::npos || endNodeId == std::string::npos)
+    {
+      return false;
+    }
+
+  nodeId = str.substr (startNodeId + 1, endNodeId - (startNodeId + 1)); // set node id
+
+  //   is number              is integer                                       is not negative
+  if (IsNumber (nodeId) && (nodeId.find_first_of (".") == std::string::npos) && (nodeId[0] != '-'))
+    {
+      return true;
+    }
+  else
+    {
+      return false;
     }
 }
 
-void 
+
+string
+GetNodeIdFromToken (string str)
+{
+  if (HasNodeIdNumber (str))
+    {
+      // find brackets
+      std::string::size_type startNodeId = str.find_first_of ("(");     // index of left bracket
+      std::string::size_type endNodeId   = str.find_first_of (")");     // index of right bracket
+
+      return str.substr (startNodeId + 1, endNodeId - (startNodeId + 1)); // set node id
+    }
+  else
+    {
+      return "";
+    }
+}
+
+
+int
+GetNodeIdInt (ParseResult pr)
+{
+  switch (pr.tokens.size ())
+    {
+    case 4:   // line like $node_(0) set X_ 11
+      return pr.ivals[0];
+      break;
+    case 7:   // line like $ns_ at 4 "$node_(0) set X_ 28"
+      return pr.ivals[3];
+      break;
+    case 8:   // line like $ns_ at 1 "$node_(0) setdest 2 3 4"
+      return pr.ivals[3];
+      break;
+    default:
+      return -1;
+    }
+}
+
+// Get node id number in string format
+string
+GetNodeIdString (ParseResult pr)
+{
+  switch (pr.tokens.size ())
+    {
+    case 4:   // line like $node_(0) set X_ 11
+      return pr.svals[0];
+      break;
+    case 7:   // line like $ns_ at 4 "$node_(0) set X_ 28"
+      return pr.svals[3];
+      break;
+    case 8:   // line like $ns_ at 1 "$node_(0) setdest 2 3 4"
+      return pr.svals[3];
+      break;
+    default:
+      return "";
+    }
+}
+
+
+Vector
+SetOneInitialCoord (Vector position, string& coord, double value)
+{
+
+  // set the position for the coord.
+  if (coord == NS2_X_COORD)
+    {
+      position.x = value;
+      NS_LOG_DEBUG ("X=" << value);
+    }
+  else if (coord == NS2_Y_COORD)
+    {
+      position.y = value;
+      NS_LOG_DEBUG ("Y=" << value);
+    }
+  else if (coord == NS2_Z_COORD)
+    {
+      position.z = value;
+      NS_LOG_DEBUG ("Z=" << value);
+    }
+  return position;
+}
+
+
+bool
+IsSetInitialPos (ParseResult pr)
+{
+  //        number of tokens         has $node_( ?                        has "set"           has doble for position?
+  return pr.tokens.size () == 4 && HasNodeIdNumber (pr.tokens[0]) && pr.tokens[1] == NS2_SET && pr.has_dval[3]
+         // coord name is X_, Y_ or Z_ ?
+         && (pr.tokens[2] == NS2_X_COORD || pr.tokens[2] == NS2_Y_COORD || pr.tokens[2] == NS2_Z_COORD);
+
+}
+
+
+bool
+IsSchedSetPos (ParseResult pr)
+{
+  //      correct number of tokens,    has $ns_                   and at
+  return pr.tokens.size () == 7 && pr.tokens[0] == NS2_NS_SCH && pr.tokens[1] == NS2_AT
+         && pr.tokens[4] == NS2_SET && pr.has_dval[2] && pr.has_dval[3]   // has set and double value for time and nodeid
+         && ( pr.tokens[5] == NS2_X_COORD || pr.tokens[5] == NS2_Y_COORD || pr.tokens[5] == NS2_Z_COORD) // has X_, Y_ or Z_?
+         && pr.has_dval[2]; // time is a number
+}
+
+bool
+IsSchedMobilityPos (ParseResult pr)
+{
+  //     number of tokens      and    has $ns_                and    has at
+  return pr.tokens.size () == 8 && pr.tokens[0] == NS2_NS_SCH && pr.tokens[1] == NS2_AT
+         //    time             x coord          y coord          velocity are numbers?
+         && pr.has_dval[2] && pr.has_dval[5] && pr.has_dval[6] && pr.has_dval[7]
+         && pr.tokens[4] == NS2_SETDEST; // and has setdest
+
+}
+
+Vector
+SetMovement (Ptr<ConstantVelocityMobilityModel> model, Vector last_pos, double at,
+             double xFinalPosition, double yFinalPosition, double speed)
+{
+  Vector position;
+  position.x = last_pos.x;
+  position.y = last_pos.y;
+  position.z = last_pos.z;
+
+  if (speed == 0)
+    {
+      // We have to maintain last position, and stop the movement
+      Simulator::Schedule (Seconds (at), &ConstantVelocityMobilityModel::SetVelocity, model,
+                           Vector (0, 0, 0));
+    }
+  else if (speed > 0)
+    {
+      // first calculate the time; time = distance / speed
+      double time = sqrt (pow (xFinalPosition - position.x, 2) + pow (yFinalPosition - position.y, 2)) / speed;
+      NS_LOG_DEBUG ("at=" << at << " time=" << time);
+      // now calculate the xSpeed = distance / time
+      double xSpeed = (xFinalPosition - position.x) / time;
+      double ySpeed = (yFinalPosition - position.y) / time; // & same with ySpeed
+
+      // quick and dirty set zSpeed = 0
+      double zSpeed = 0;
+
+      NS_LOG_DEBUG ("Calculated Speed: X=" << xSpeed << " Y=" << ySpeed << " Z=" << zSpeed);
+
+      // Set the Values
+      Simulator::Schedule (Seconds (at), &ConstantVelocityMobilityModel::SetVelocity, model,
+                           Vector (xSpeed, ySpeed, zSpeed));
+
+      if (time >= 0)
+        {
+          Simulator::Schedule (Seconds (at + time), &ConstantVelocityMobilityModel::SetVelocity,
+                               model, Vector (0, 0, 0));
+        }
+
+      position.x = xFinalPosition;
+      position.y = yFinalPosition;
+      position.z = 0;
+    }
+
+  return position;
+}
+
+
+Vector
+SetInitialPosition (Ptr<ConstantVelocityMobilityModel> model, string coord, double coordVal)
+{
+  model->SetPosition (SetOneInitialCoord (model->GetPosition (), coord, coordVal));
+
+  Vector position;
+  position.x = model->GetPosition ().x;
+  position.y = model->GetPosition ().y;
+  position.z = model->GetPosition ().z;
+
+  return position;
+}
+
+// Schedule a set of position for a node
+Vector
+SetSchedPosition (Ptr<ConstantVelocityMobilityModel> model, double at, string coord, double coordVal)
+{
+  // update position
+  model->SetPosition (SetOneInitialCoord (model->GetPosition (), coord, coordVal));
+
+  Vector position;
+  position.x = model->GetPosition ().x;
+  position.y = model->GetPosition ().y;
+  position.z = model->GetPosition ().z;
+
+  // Chedule next positions
+  Simulator::Schedule (Seconds (at), &ConstantVelocityMobilityModel::SetPosition, model,position);
+
+  return position;
+}
+
+void
 Ns2MobilityHelper::Install (void) const
 {
   Install (NodeList::Begin (), NodeList::End ());
 }
 
+// -----------------------------------------------------------------------------
+// Testing
+// -----------------------------------------------------------------------------
+bool operator== (Vector const & a, Vector const & b)
+{
+  return (a.x == b.x && a.y == b.y && a.z == b.z);
+}
+/**
+ * Every test case is supposed to:
+ *  1. Generate short mobility trace file
+ *  2. Read it back using Ns2MobilityHelper
+ *  3. Check initial node positions and speeds.
+ *  4. Run simulation listening for all CourseChange events and compare actual mobility with the reference
+ */
+class Ns2MobilityHelperTest : public TestCase
+{
+public:
+  /// Single record in mobility reference
+  struct ReferencePoint
+  {
+    std::string node;       ///< node ID as string, e.g. "1"
+    Time time;              ///< timestamp
+    Vector pos;             ///< reference position
+    Vector vel;             ///< reference velocity
+
+    ReferencePoint (std::string const & id, Time t, Vector const & p, Vector const & v)
+      : node (id),
+        time (t),
+        pos (p),
+        vel (v)
+    {
+    }
+    /// Sort by timestamp
+    bool operator< (ReferencePoint const & o) const
+    {
+      return (time < o.time);
+    }
+  };
+  /**
+   * Create new test case. To make it useful SetTrace () and AddReferencePoint () must be called
+   *
+   * \param name        Short description
+   * \param nodes       Number of nodes used in the test trace, 1 by default
+   */
+  Ns2MobilityHelperTest (std::string const & name, Time timeLimit, uint32_t nodes = 1)
+    : TestCase (name),
+      m_timeLimit (timeLimit),
+      m_nodeCount (nodes),
+      m_nextRefPoint (0)
+  {
+  }
+  /// Empty
+  virtual ~Ns2MobilityHelperTest ()
+  {
+  }
+  /// Set NS-2 trace to read as single large string (don't forget to add \n and quote ")
+  void SetTrace (std::string const & trace)
+  {
+    m_trace = trace;
+  }
+  /// Add next reference point
+  void AddReferencePoint (ReferencePoint const & r)
+  {
+    m_reference.push_back (r);
+  }
+  /// Sugar
+  void AddReferencePoint (const char * id, double sec, Vector const & p, Vector const & v)
+  {
+    AddReferencePoint (ReferencePoint (id, Seconds (sec), p, v));
+  }
+
+private:
+  /// Test time limit
+  Time m_timeLimit;
+  /// Number of nodes used in the test
+  uint32_t m_nodeCount;
+  /// Trace as string
+  std::string m_trace;
+  /// Reference mobility
+  std::vector<ReferencePoint> m_reference;
+  /// Next reference point to be checked
+  size_t m_nextRefPoint;
+  /// TMP trace file name
+  std::string m_traceFile;
+
+private:
+  /// Dump NS-2 trace to tmp file
+  bool WriteTrace ()
+  {
+    m_traceFile = GetTempDir () + "Ns2MobilityHelperTest.tcl";
+    std::ofstream of (m_traceFile.c_str ());
+    NS_TEST_ASSERT_MSG_EQ (of.is_open (), true, "Need to write tmp. file");
+    of << m_trace;
+    of.close ();
+    return false; // no errors
+  }
+  /// Create and name nodes
+  void CreateNodes ()
+  {
+    NodeContainer nodes;
+    nodes.Create (m_nodeCount);
+    for (uint32_t i = 0; i < m_nodeCount; ++i)
+      {
+        std::ostringstream os;
+        os << i;
+        Names::Add (os.str (), nodes.Get (i));
+      }
+  }
+  /// Check that all initial positions are correct
+  bool CheckInitialPositions ()
+  {
+    std::stable_sort (m_reference.begin (), m_reference.end ());
+    while (m_nextRefPoint < m_reference.size () && m_reference[m_nextRefPoint].time == Seconds (0))
+      {
+        ReferencePoint const & rp = m_reference[m_nextRefPoint];
+        Ptr<Node> node = Names::Find<Node> (rp.node);
+        NS_TEST_ASSERT_MSG_NE (node, 0, "Can't find node with id " << rp.node);
+        Ptr<MobilityModel> mob = node->GetObject<MobilityModel> ();
+        NS_TEST_ASSERT_MSG_NE (mob, 0, "Can't find mobility for node " << rp.node);
+
+        NS_TEST_EXPECT_MSG_EQ (rp.pos, mob->GetPosition (), "Initial position mismatch for node " << rp.node);
+        NS_TEST_EXPECT_MSG_EQ (rp.vel, mob->GetVelocity (), "Initial velocity mismatch for node " << rp.node);
+
+        m_nextRefPoint++;
+      }
+    return GetErrorStatus ();
+  }
+  /// Listen for course change events
+  void CourseChange (std::string context, Ptr<const MobilityModel> mobility)
+  {
+    Time time = Simulator::Now ();
+    Ptr<Node> node = mobility->GetObject<Node> ();
+    NS_ASSERT (node);
+    std::string id = Names::FindName (node);
+    NS_ASSERT (!id.empty ());
+    Vector pos = mobility->GetPosition ();
+    Vector vel = mobility->GetVelocity ();
+
+    NS_TEST_EXPECT_MSG_LT (m_nextRefPoint, m_reference.size (), "Not enough reference points");
+    if (m_nextRefPoint >= m_reference.size ())
+      {
+        return;
+      }
+
+    ReferencePoint const & ref = m_reference [m_nextRefPoint++];
+    NS_TEST_EXPECT_MSG_EQ (time, ref.time, "Time mismatch");
+    NS_TEST_EXPECT_MSG_EQ (id, ref.node, "Node ID mismatch at time " << time.GetSeconds () << " s");
+    NS_TEST_EXPECT_MSG_EQ (pos, ref.pos, "Position mismatch at time " << time.GetSeconds () << " s for node " << id);
+    NS_TEST_EXPECT_MSG_EQ (vel, ref.vel, "Velocity mismatch at time " << time.GetSeconds () << " s for node " << id);
+  }
+  /// Go
+  bool DoRun ()
+  {
+    NS_TEST_ASSERT_MSG_EQ (m_trace.empty (), false, "Need trace");
+    NS_TEST_ASSERT_MSG_EQ (m_reference.empty (), false, "Need reference");
+
+    if (WriteTrace ())
+      {
+        return GetErrorStatus ();
+      }
+    CreateNodes ();
+    Ns2MobilityHelper mobility (m_traceFile);
+    mobility.Install ();
+    if (CheckInitialPositions ())
+      {
+        return GetErrorStatus ();
+      }
+    Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange",
+                     MakeCallback (&Ns2MobilityHelperTest::CourseChange, this));
+    Simulator::Stop (m_timeLimit);
+    Simulator::Run ();
+    Names::Clear ();
+    std::remove (m_traceFile.c_str ());
+    Simulator::Destroy ();
+    return GetErrorStatus ();
+  }
+};
+
+/// The test suite
+class Ns2MobilityHelperTestSuite : public TestSuite
+{
+public:
+  Ns2MobilityHelperTestSuite () : TestSuite ("mobility-ns2-trace-helper", UNIT)
+  {
+    // to be used as temporary variable for test cases.
+    // Note that test suite takes care of deleting all test cases.
+    Ns2MobilityHelperTest * t (0);
+
+    // Initial position
+    t = new Ns2MobilityHelperTest ("initial position", Seconds (1));
+    t->SetTrace ("$node_(0) set X_ 1.0\n"
+                 "$node_(0) set Y_ 2.0\n"
+                 "$node_(0) set Z_ 3.0\n"
+                 );
+    t->AddReferencePoint ("0", 0, Vector (1, 2, 3), Vector (0, 0, 0));
+    AddTestCase (t);
+
+    // Check parsing comments, empty lines and no EOF at the end of file
+    t = new Ns2MobilityHelperTest ("comments", Seconds (1));
+    t->SetTrace ("# comment\n"
+                 "\n\n" // empty lines
+                 "$node_(0) set X_ 1.0 # comment \n"
+                 "$node_(0) set Y_ 2.0 ### \n"
+                 "$node_(0) set Z_ 3.0 # $node_(0) set Z_ 3.0\n"
+                 "#$node_(0) set Z_ 100 #"
+                 );
+    t->AddReferencePoint ("0", 0, Vector (1, 2, 3), Vector (0, 0, 0));
+    AddTestCase (t);
+
+    // Simple setdest. Arguments are interpreted as x, y, speed by default
+    t = new Ns2MobilityHelperTest ("simple setdest", Seconds (10));
+    t->SetTrace ("$ns_ at 1.0 \"$node_(0) setdest 25 0 5\"");
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 0, Vector (0, 0, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 1, Vector (0, 0, 0), Vector (5, 0, 0));
+    t->AddReferencePoint ("0", 6, Vector (25, 0, 0), Vector (0, 0, 0));
+    AddTestCase (t);
+
+    // Several set and setdest. Arguments are interpreted as x, y, speed by default
+    t = new Ns2MobilityHelperTest ("square setdest", Seconds (6));
+    t->SetTrace ("$node_(0) set X_ 0.0\n"
+                 "$node_(0) set Y_ 0.0\n"
+                 "$ns_ at 1.0 \"$node_(0) setdest 5  0  5\"\n"
+                 "$ns_ at 2.0 \"$node_(0) setdest 5  5  5\"\n"
+                 "$ns_ at 3.0 \"$node_(0) setdest 0  5  5\"\n"
+                 "$ns_ at 4.0 \"$node_(0) setdest 0  0  5\"\n"
+                 );
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 0, Vector (0, 0, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("0", 1, Vector (0, 0, 0), Vector (5,  0, 0));
+    t->AddReferencePoint ("0", 2, Vector (5, 0, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("0", 2, Vector (5, 0, 0), Vector (0,  5, 0));
+    t->AddReferencePoint ("0", 3, Vector (5, 5, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("0", 3, Vector (5, 5, 0), Vector (-5, 0, 0));
+    t->AddReferencePoint ("0", 4, Vector (0, 5, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 4, Vector (0, 5, 0), Vector (0, -5, 0));
+    t->AddReferencePoint ("0", 5, Vector (0, 0, 0), Vector (0,  0, 0));
+    AddTestCase (t);
+
+    // Scheduled set position
+    t = new Ns2MobilityHelperTest ("scheduled set position", Seconds (2));
+    t->SetTrace ("$ns_ at 1.0 \"$node_(0) set X_ 10\"\n"
+                 "$ns_ at 1.0 \"$node_(0) set Z_ 10\"\n"
+                 "$ns_ at 1.0 \"$node_(0) set Y_ 10\"");
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 1, Vector (10, 0, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 1, Vector (10, 0, 10), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 1, Vector (10, 10, 10), Vector (0, 0, 0));
+    AddTestCase (t);
+
+    // Malformed lines
+    t = new Ns2MobilityHelperTest ("malformed lines", Seconds (2));
+    t->SetTrace ("$node() set X_ 1 # node id is not present\n"
+                 "$node # incoplete line\"\n"
+                 "$node this line is not correct\n"
+                 "$node_(0) set X_ 1 # line OK \n"
+                 "$node_(0) set Y_ 2 # line OK \n"
+                 "$node_(0) set Z_ 3 # line OK \n"
+                 "$ns_ at  \"$node_(0) setdest 4 4 4\" # time not present\n"
+                 "$ns_ at 1 \"$node_(0) setdest 2 2 1   \" # line OK \n");
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 0, Vector (1, 2, 3), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 1, Vector (1, 2, 3), Vector (1, 0, 0));
+    t->AddReferencePoint ("0", 2, Vector (2, 2, 3), Vector (0, 0, 0));
+    AddTestCase (t);
+
+    // Non possible values
+    t = new Ns2MobilityHelperTest ("non possible values", Seconds (2));
+    t->SetTrace ("$node_(0) set X_ 1 # line OK \n"
+                 "$node_(0) set Y_ 2 # line OK \n"
+                 "$node_(0) set Z_ 3 # line OK \n"
+                 "$node_(-22) set Y_ 3 # node id not correct\n"
+                 "$node_(3.3) set Y_ 1111 # node id not correct\n"
+                 "$ns_ at sss \"$node_(0) setdest 5 5 5\" # time is not a number\n"
+                 "$ns_ at 1 \"$node_(0) setdest 2 2 1\" # line OK \n"
+                 "$ns_ at 1 \"$node_(0) setdest 2 2 -1\" # negative speed is not correct\n"
+                 "$ns_ at 1 \"$node_(0) setdest 2 2 sdfs\"    # speed is not a number\n"
+                 "$ns_ at 1 \"$node_(0) setdest 2 2 s232dfs\" # speed is not a number\n"
+                 "$ns_ at 1 \"$node_(0) setdest 233 2.. s232dfs\"   # more than one non numbers\n"
+                 "$ns_ at -12 \"$node_(0) setdest 11 22 33\" # time should not be negative\n");
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 0, Vector (1, 2, 3), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 1, Vector (1, 2, 3), Vector (1, 0, 0));
+    t->AddReferencePoint ("0", 2, Vector (2, 2, 3), Vector (0, 0, 0));
+    AddTestCase (t);
+
+    // More than one node
+    t = new Ns2MobilityHelperTest ("few nodes, combinations of set and setdest", Seconds (10), 3);
+    t->SetTrace ("$node_(0) set X_ 1.0\n"
+                 "$node_(0) set Y_ 2.0\n"
+                 "$node_(0) set Z_ 3.0\n"
+                 "$ns_ at 1.0 \"$node_(1) setdest 25 0 5\"\n"
+                 "$node_(2) set X_ 0.0\n"
+                 "$node_(2) set Y_ 0.0\n"
+                 "$ns_ at 1.0 \"$node_(2) setdest 5  0  5\"\n"
+                 "$ns_ at 2.0 \"$node_(2) setdest 5  5  5\"\n"
+                 "$ns_ at 3.0 \"$node_(2) setdest 0  5  5\"\n"
+                 "$ns_ at 4.0 \"$node_(2) setdest 0  0  5\"\n");
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 0, Vector (1, 2, 3), Vector (0, 0, 0));
+    t->AddReferencePoint ("1", 0, Vector (0, 0, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("1", 1, Vector (0, 0, 0), Vector (5, 0, 0));
+    t->AddReferencePoint ("1", 6, Vector (25, 0, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("2", 0, Vector (0, 0, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("2", 1, Vector (0, 0, 0), Vector (5,  0, 0));
+    t->AddReferencePoint ("2", 2, Vector (5, 0, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("2", 2, Vector (5, 0, 0), Vector (0,  5, 0));
+    t->AddReferencePoint ("2", 3, Vector (5, 5, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("2", 3, Vector (5, 5, 0), Vector (-5, 0, 0));
+    t->AddReferencePoint ("2", 4, Vector (0, 5, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("2", 4, Vector (0, 5, 0), Vector (0, -5, 0));
+    t->AddReferencePoint ("2", 5, Vector (0, 0, 0), Vector (0,  0, 0));
+    AddTestCase (t);
+
+    // Test for Speed == 0, that acts as stop the node.
+    t = new Ns2MobilityHelperTest ("setdest with speed cero", Seconds (10));
+    t->SetTrace ("$ns_ at 1.0 \"$node_(0) setdest 25 0 5\"\n"
+                 "$ns_ at 7.0 \"$node_(0) setdest 11  22  0\"\n");
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 0, Vector (0, 0, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 1, Vector (0, 0, 0), Vector (5, 0, 0));
+    t->AddReferencePoint ("0", 6, Vector (25, 0, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 7, Vector (25, 0, 0), Vector (0, 0, 0));
+    AddTestCase (t);
+
+
+    // Test negative positions
+    t = new Ns2MobilityHelperTest ("test negative positions", Seconds (10));
+    t->SetTrace ("$node_(0) set X_ -1.0\n"
+                 "$node_(0) set Y_ 0\n"
+                 "$ns_ at 1.0 \"$node_(0) setdest 0 0 1\"\n"
+                 "$ns_ at 2.0 \"$node_(0) setdest 0  -1  1\"\n");
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 0, Vector (-1, 0, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 1, Vector (-1, 0, 0), Vector (1, 0, 0));
+    t->AddReferencePoint ("0", 2, Vector (0, 0, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 2, Vector (0, 0, 0), Vector (0, -1, 0));
+    t->AddReferencePoint ("0", 3, Vector (0, -1, 0), Vector (0, 0, 0));
+    AddTestCase (t);
+
+    // Sqare setdest with values in the form 1.0e+2
+    t = new Ns2MobilityHelperTest ("Foalt numbers in 1.0e+2 format", Seconds (6));
+    t->SetTrace ("$node_(0) set X_ 0.0\n"
+                 "$node_(0) set Y_ 0.0\n"
+                 "$ns_ at 1.0 \"$node_(0) setdest 1.0e+2  0       1.0e+2\"\n"
+                 "$ns_ at 2.0 \"$node_(0) setdest 1.0e+2  1.0e+2  1.0e+2\"\n"
+                 "$ns_ at 3.0 \"$node_(0) setdest 0       1.0e+2  1.0e+2\"\n"
+                 "$ns_ at 4.0 \"$node_(0) setdest 0       0       1.0e+2\"\n");
+    //                     id  t  position         velocity
+    t->AddReferencePoint ("0", 0, Vector (0, 0, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("0", 1, Vector (0, 0, 0), Vector (100,  0, 0));
+    t->AddReferencePoint ("0", 2, Vector (100, 0, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("0", 2, Vector (100, 0, 0), Vector (0,  100, 0));
+    t->AddReferencePoint ("0", 3, Vector (100, 100, 0), Vector (0,  0, 0));
+    t->AddReferencePoint ("0", 3, Vector (100, 100, 0), Vector (-100, 0, 0));
+    t->AddReferencePoint ("0", 4, Vector (0, 100, 0), Vector (0, 0, 0));
+    t->AddReferencePoint ("0", 4, Vector (0, 100, 0), Vector (0, -100, 0));
+    t->AddReferencePoint ("0", 5, Vector (0, 0, 0), Vector (0,  0, 0));
+    AddTestCase (t);
+
+  }
+} g_ns2TransmobilityHelperTestSuite;
+
+
 } // namespace ns3
--- a/src/helper/ns2-mobility-helper.h	Sat Jun 19 17:10:57 2010 +0100
+++ b/src/helper/ns2-mobility-helper.h	Sun Jun 20 17:21:22 2010 +0400
@@ -1,6 +1,7 @@
 /* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
 /*
  * Copyright (c) 2007 INRIA
+ *               2009,2010 Contributors
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -16,9 +17,11 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ * Contributors: Thomas Waldecker <twaldecker@rocketmail.com>
+ *               Martín Giachino <martin.giachino@gmail.com>
  */
-#ifndef NS2_MOBILITY_FILE_TOPOLOGY_H
-#define NS2_MOBILITY_FILE_TOPOLOGY_H
+#ifndef NS2_MOBILITY_HELPER_H
+#define NS2_MOBILITY_HELPER_H
 
 #include <string>
 #include <stdint.h>
@@ -30,8 +33,27 @@
 class ConstantVelocityMobilityModel;
 
 /**
- * \brief a topology object which can read ns2's movement files
- *        generated by the CMU setdest tool.
+ * \brief A helper which can read ns-2 movement files and configure nodes mobility.
+ * 
+ * This implementation is based on the ns2 movement documentation of ns2
+ * as described in http://www.isi.edu/nsnam/ns/doc/node174.html
+ *
+ * Valid trace files use the following ns2 statements:
+ *
+ * $node set X_ x1
+ * $node set Y_ y1
+ * $node set Z_ z1
+ * $ns at $time $node setdest x2 y2 speed
+ * $ns at $time $node set X_ x1
+ * $ns at $time $node set Y_ Y1
+ * $ns at $time $node set Z_ Z1
+ *
+ * Following tools are known to support this format:
+ *  - BonnMotion http://net.cs.uni-bonn.de/wg/cs/applications/bonnmotion/
+ *  - SUMO http://sourceforge.net/apps/mediawiki/sumo/index.php?title=Main_Page
+ *  - TraNS http://trans.epfl.ch/ 
+ *  
+ *  See usage example in examples/mobility/ns2-mobility-trace.cc
  */
 class Ns2MobilityHelper
 {
@@ -70,9 +92,8 @@
     virtual ~ObjectStore () {}
     virtual Ptr<Object> Get (uint32_t i) const = 0;
   };
-  void LayoutObjectStore (const ObjectStore &store) const;
+  void ConfigNodesMovements (const ObjectStore &store) const;
   Ptr<ConstantVelocityMobilityModel> GetMobilityModel (std::string idString, const ObjectStore &store) const;
-  double ReadDouble (std::string valueString) const;
   std::string m_filename;
 };
 
@@ -104,10 +125,10 @@
     T m_begin;
     T m_end;
   };
-  LayoutObjectStore (MyObjectStore (begin, end));
+  ConfigNodesMovements (MyObjectStore (begin, end));
 }
 
 
 } // namespace ns3
 
-#endif /* NS2_MOBILITY_FILE_TOPOLOGY_H */
+#endif /* NS2_MOBILITY_HELPER_H */