//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Matisse Copyright (c) 2010 Dave Griffiths // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // 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. import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class Vec2 { public var x:Float; public var y:Float; public function new(px:Float, py:Float) { x=px; y=py; } public function Clone() : Vec2 { return new Vec2(x,y); } public function Add(other:Vec2) { x+=other.x; y+=other.y; } public function Sub(other:Vec2) { x-=other.x; y-=other.y; } public function Mul(v:Float) { x*=v; y*=v; } public function Div(v:Float) { x/=v; y/=v; } public function LessThan(other:Vec2) : Bool { return Mag(); var Field:Array; var Width:Int; var Height:Int; public function new(w:Int, h:Int, size:Vec2) { super(); Size=size; MyRndGen = new RndGen(); Grid = new Array(); Field = new Array(); Width = w; Height = h; for (x in 0...w) { for (y in 0...h) { Grid.push(new Vec2(y*Size.y/h,x*Size.x/w)); Field.push(new Vec2(0,0)); } } } public function GetVec(Pos:Vec2) : Vec2 { var x = Math.floor(Pos.x/Size.x*Width); var y = Math.floor(Pos.y/Size.y*Height); return GetVecByIndex(new Vec2(x,y)); } public function GetVecByIndex(Pos:Vec2) : Vec2 { if (Pos.x<0 || Pos.x>=Width) return new Vec2(0,0); if (Pos.y<0 || Pos.y>=Height) return new Vec2(0,0); return Field[cast(Math.floor(Pos.x+Pos.y*Height),Int)]; } public function Puff(Pos:Vec2, Dir:Vec2) { var vec = GetVec(Pos); vec.x=Dir.x; vec.y=Dir.y; } public function Update(frame) { for (x in 0...Width) { for (y in 0...Height) { var vec=GetVecByIndex(new Vec2(x,y)); vec.Add(GetVecByIndex(new Vec2(x-1,y))); vec.Add(GetVecByIndex(new Vec2(x,y-1))); vec.Add(GetVecByIndex(new Vec2(x+1,y))); vec.Add(GetVecByIndex(new Vec2(x,y+1))); vec.Div(5); } } } public function Draw() { graphics.clear(); graphics.lineStyle(1, 0x000000, 1); for (i in 0...Grid.length) { graphics.moveTo(Grid[i].x,Grid[i].y); graphics.lineTo(Grid[i].x+Field[i].x*10,Grid[i].y+Field[i].y*10); } } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ enum Command { move; point; tangent; } class Squiggle extends MovieClip { var MyRndGen:RndGen; var Commands:Array; var Positions:Array; var OriginalPos:Array; var Velocities:Array; var Colour:Int; public function new(colour:Int,svg:String) { super(); Colour = colour; MyRndGen = new RndGen(); Commands = new Array(); Positions = new Array(); OriginalPos = new Array(); Velocities = new Array(); var tokens = svg.split(" "); var pos = 0; while (pos < tokens.length) { if (tokens[pos] == "M") { Commands.push(move); pos++; Positions.push(GetVec2(tokens[pos])); OriginalPos.push(GetVec2(tokens[pos])); } if (tokens[pos] == "C") { Commands.push(point); pos++; Positions.push(GetVec2(tokens[pos])); OriginalPos.push(GetVec2(tokens[pos])); Commands.push(tangent); pos++; Positions.push(GetVec2(tokens[pos])); OriginalPos.push(GetVec2(tokens[pos])); } pos++; } for (p in Positions) { Velocities.push(new Vec2(0,0)); } } function GetVec2(str) : Vec2 { var t = str.split(","); return new Vec2(Std.parseFloat(t[0])+30,Std.parseFloat(t[1])-200); } public function Update(time,field) { for (i in 0...Velocities.length) { var v=OriginalPos[i].Clone(); v.Sub(Positions[i]); v.Mul(0.1); Velocities[i].Add(v); var fv:Vec2 = field.GetVec(Positions[i]); Velocities[i].Add(fv); Velocities[i].Mul(0.95); Positions[i].Add(Velocities[i]); } graphics.clear(); graphics.beginFill(Colour); //graphics.lineStyle(5,0x000000); var pos = 0; while (pos < Commands.length) { if (Commands[pos] == move) { pos++; graphics.moveTo(Positions[pos].x,Positions[pos].y); } if (Commands[pos] == point) { graphics.curveTo(Positions[pos].x,Positions[pos].y, Positions[pos+1].x,Positions[pos+1].y); pos+=1; } pos++; } graphics.endFill(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class Matisse extends MovieClip { var MySquiggles:Array; var Frame:Int; var Field:VectorField; var LastMouse:Vec2; var Puffing:Bool; public function new() { super(); Frame=0; var paths = [[0xa8b52c,"M 146.0453,529.46912 C 144.19289,525.76429 140.18743,535.327 137.25849,538.25593 C 132.94501,542.56944 133.40099,544.11381 128.47172,544.11381 C 122.71969,544.11381 120.42277,541.16237 121.63753,536.3033 C 122.72146,531.96759 123.71696,529.00011 122.61383,524.58758 C 120.88993,517.69192 116.20256,527.77759 115.77967,529.46912 C 114.57527,534.28675 113.02133,537.57353 111.87443,542.16116 C 110.78112,546.53433 108.96174,548.99535 104.06392,548.99535 C 99.259655,548.99535 96.448187,543.52696 95.277142,541.18487 C 92.656102,535.94278 93.472566,532.10197 95.277142,528.49282 C 96.774368,525.49837 101.2144,524.05971 104.06392,522.63496 C 108.24422,520.54482 109.93212,518.71937 112.85072,515.80077 C 116.73738,511.91415 113.28383,507.88021 111.87443,505.06136 C 109.74443,500.80137 103.40008,501.15613 99.182379,501.15613 C 95.763243,501.15613 91.559401,504.47946 88.442968,506.0377 C 84.90658,507.80588 81.407128,511.99638 77.703552,513.84817 C 73.554115,515.92288 72.401846,518.59067 67.940441,519.70603 C 63.428164,520.83409 60.068457,519.70603 55.248394,519.70603 C 52.855258,519.70603 47.636245,515.02283 46.461614,513.84817 C 43.355209,510.74176 43.664768,505.50933 44.508982,502.13242 C 45.8183,496.89518 49.804126,496.41525 54.272092,495.29825 C 58.529455,494.23392 64.502386,495.29825 68.916744,495.29825 C 74.186331,495.29825 78.295228,494.41812 82.585095,493.34564 C 85.644344,492.58082 87.604194,486.93765 88.442968,483.58252 C 89.567793,479.08321 80.932672,477.55564 77.703552,476.74836 C 72.649679,475.48488 67.45106,475.77205 62.08257,475.77205 C 57.733355,475.77205 52.18294,476.53842 47.437917,477.72466 C 42.831738,478.87622 38.027396,479.67728 33.769568,479.67728 C 30.473993,479.67728 24.809117,480.6536 20.101218,480.6536 C 13.671599,480.6536 12.056356,479.56011 8.3854754,477.72466 C 6.0848447,476.57436 4.0292624,468.11021 3.5039323,466.00894 C 2.3283461,461.30656 6.1370043,458.27242 10.338107,457.22213 C 15.430114,455.94916 18.077782,455.26953 24.006457,455.26953 C 29.567862,455.26953 32.505656,456.17393 36.698504,457.22213 C 40.940367,458.28261 45.789869,462.17984 49.390523,463.08 C 56.107341,464.75921 59.054894,461.22615 60.129963,460.15108 C 60.564208,459.71682 51.096169,453.68157 50.366853,453.31689 C 46.415799,451.34139 43.937562,450.10227 40.603743,448.43535 C 36.366254,446.31659 33.915929,444.11515 30.840632,442.57748 C 26.347354,440.33084 24.686156,439.25309 22.053825,435.74331 C 19.541553,432.3936 18.296067,429.49904 17.172283,425.0039 C 16.258935,421.35051 15.219649,416.48904 15.219649,412.31186 C 15.219649,407.40388 16.874832,404.11993 19.124916,399.6198 C 20.339075,397.19149 31.772131,399.36454 32.793265,399.6198 C 34.952044,400.1595 38.035843,407.89811 38.651111,410.35924 C 39.849139,415.15136 42.528164,419.08963 44.508982,423.05127 C 46.523504,427.0803 48.461594,430.95652 50.366853,434.76701 C 52.089284,438.21187 53.741924,441.51715 55.248394,444.53011 C 57.022655,448.07864 58.500369,450.71099 61.106267,453.31689 C 64.123692,456.33433 68.508444,458.34045 71.84568,459.17477 C 75.924015,460.19435 75.74742,454.27921 74.774617,450.38796 C 73.932563,447.01981 70.007179,443.66791 67.940441,441.60118 C 65.068886,438.72963 63.476221,435.18436 61.106267,432.81437 C 58.592329,430.30043 61.106267,424.0394 61.106267,420.12233 C 61.106267,415.01443 65.113418,411.77274 67.940441,410.35924 C 70.752978,408.95296 77.205915,414.13534 78.679856,415.24078 C 81.748673,417.5424 83.048589,421.04934 84.537727,424.02759 C 85.945376,426.84292 84.981019,435.56387 85.51403,437.69594 C 86.578358,441.95328 85.51403,447.92623 85.51403,452.3406 C 85.51403,456.42716 87.786693,461.43123 88.442968,464.05631 C 89.699415,469.08208 91.309464,471.61709 92.348206,475.77205 C 93.009807,478.41844 98.149656,482.08987 101.13501,483.58252 C 104.72875,485.3794 107.66471,487.82371 110.8981,489.4404 C 116.10247,492.04258 116.75596,484.71097 116.75596,480.6536 C 116.75596,474.73189 116.88215,474.07178 114.80336,469.91419 C 112.81147,465.9304 110.53335,463.32678 108.94549,460.15108 C 106.91385,456.0878 110.25656,450.0252 110.8981,447.45903 C 111.56687,444.78399 120.13918,442.21985 122.61383,441.60118 C 126.65226,440.59155 129.75429,446.73159 130.42432,449.41166 C 131.54044,453.87613 131.40062,459.50179 131.40062,464.05631 C 131.40062,468.85467 131.26796,474.35017 130.42432,477.72466 C 129.21579,482.5588 129.49173,486.33657 128.47172,490.4167 C 127.254,495.28749 127.49538,500.96482 127.49538,506.0377 C 127.49538,511.31597 130.83724,512.731 135.30588,513.84817 C 141.00576,515.27313 139.05381,510.57216 140.18743,506.0377 C 141.26878,501.71224 141.16373,495.70073 141.16373,491.39302 C 141.16373,485.05492 145.59057,485.64883 149.95054,484.55883 C 155.9973,483.04714 158.73732,486.37384 158.73732,491.39302 C 158.73732,495.26808 155.78166,499.31051 154.83209,503.10875 C 153.78482,507.29784 152.94246,510.66727 151.90314,514.82446 C 150.40995,520.79726 149.80932,523.19575 146.0453,529.46912 z"], [0xa8b52c,"M 213.41071,541.18487 C 211.1234,538.96419 205.20834,535.71717 199.74237,534.35069 C 194.29419,532.98865 191.8752,533.34604 188.02665,531.42176 C 185.28934,530.05311 183.52137,523.38753 182.16879,520.68234 C 180.0568,516.45836 192.74526,520.11273 193.88452,520.68234 C 197.84495,522.66255 200.07476,524.58758 205.60023,524.58758 C 213.26064,524.58758 212.36063,523.90641 213.41071,519.70603 C 213.75289,518.33734 204.54436,515.04866 203.64764,514.82446 C 198.4123,513.51564 195.83969,510.92181 192.90819,507.9903 C 189.18212,504.2642 188.02665,500.2259 188.02665,495.29825 C 188.02665,488.79428 192.40594,489.31482 196.81346,490.4167 C 200.53962,491.34826 203.0026,494.98453 204.62394,498.22718 C 206.29574,501.57078 210.68452,503.69827 213.41071,505.06136 C 218.77098,507.74151 219.58788,509.62364 223.17383,506.0377 C 226.45349,502.75803 222.60654,497.09257 221.22122,494.32194 C 219.22267,490.32488 215.08498,489.3012 211.45811,487.48778 C 207.53813,485.52778 203.32596,484.2372 200.71869,481.6299 C 197.54165,478.45285 197.78976,475.45763 197.78976,469.91419 C 197.78976,464.21317 203.90124,463.26067 208.52918,462.1037 C 212.00228,461.23543 214.77835,468.55041 215.36335,470.89048 C 216.61132,475.88234 218.22097,477.65334 221.22122,480.6536 C 225.67079,485.10319 226.78221,485.53517 230.98434,485.53517 C 233.43961,485.53517 231.25759,472.95982 230.98434,471.86681 C 230.46384,469.78491 224.22197,465.10446 223.17383,464.05631 C 219.46312,460.3456 216.59652,457.73585 214.38704,453.31689 C 212.16922,448.88126 210.98076,446.4395 212.43442,440.62485 C 213.73466,435.42393 215.24417,432.93356 219.26859,428.90914 C 221.70057,426.47718 231.81031,424.06516 231.96063,424.02759 C 233.65502,423.60399 231.09283,438.23819 230.98434,438.67225 C 229.98457,442.67116 229.14938,446.98828 228.0554,451.36429 C 227.03602,455.44181 231.77824,459.96868 233.91325,462.1037 C 239.0453,467.23573 242.45468,460.64182 243.67636,458.19846 C 245.89955,453.75205 246.06044,446.59609 248.55793,441.60118 C 250.42559,437.86581 250.46056,433.99058 251.48686,429.88544 C 252.47005,425.95264 254.64235,421.62183 256.3684,418.16972 C 258.97438,412.9578 258.87681,408.57938 265.15521,413.28815 C 269.81872,416.7858 267.47726,421.33609 266.13151,424.02759 C 264.799,426.69257 260.09723,429.08554 258.32102,430.86176 C 254.28703,434.89573 259.12678,440.45429 261.24995,442.57748 C 264.10455,445.43206 272.51116,440.00625 273.94199,439.64855 C 278.27929,438.56423 284.20348,438.77192 288.58664,439.64855 C 295.7208,441.07539 288.57956,448.44244 287.61034,449.41166 C 284.79208,452.22994 280.72537,453.32961 276.87092,454.2932 C 272.44058,455.4008 267.7321,456.82201 262.22627,458.19846 C 258.35224,459.16695 254.38823,462.1106 250.51053,463.08 C 246.05161,464.19474 243.69426,469.23945 241.72374,471.86681 C 238.71537,475.87795 242.04045,480.94408 242.70005,483.58252 C 243.87862,488.29686 254.06733,481.97836 254.41577,481.6299 C 257.39867,478.647 258.7357,476.33366 261.24995,473.81942 C 263.76792,471.30146 269.00793,470.90364 272.96568,469.91419 C 276.4237,469.04968 282.06465,472.99919 283.7051,473.81942 C 287.64057,475.78718 285.37975,483.71807 284.68139,486.51147 C 283.81409,489.98074 277.576,490.4167 273.94199,490.4167 C 268.87468,490.4167 264.42969,491.08624 259.29734,492.36935 C 252.9413,493.95835 248.32715,495.41364 244.65269,497.25088 C 239.61661,499.76891 235.37633,502.62198 231.96063,506.0377 C 227.85747,510.14084 226.8505,513.9102 228.0554,518.72972 C 228.7003,521.30933 236.51171,514.17867 236.84217,513.84817 C 238.96277,511.72758 245.64714,509.94293 249.53422,509.94293 C 254.62673,509.94293 257.34471,514.45753 257.34471,518.72972 C 257.34471,523.59933 253.60189,528.33039 251.48686,530.44545 C 248.911,533.02127 240.83322,534.79596 237.81851,536.3033 C 232.92459,538.75026 226.89534,539.32411 223.17383,541.18487 C 220.49267,542.52546 216.19332,541.7414 213.41071,541.18487 z"], [0x1c8d66,"M 197.78976,451.36429 C 201.78332,452.36269 199.85407,443.33044 201.695,439.64855 C 203.35385,436.33084 208.20267,432.16458 210.4818,429.88544 C 213.45156,426.91569 215.45859,424.90865 218.29228,422.07495 C 221.32229,419.04496 223.42338,414.90806 226.10277,411.33554 C 228.90291,407.60201 230.54856,403.42029 232.93694,398.6435 C 235.41678,393.68383 234.89127,390.83643 232.93694,386.92778 C 231.4288,383.9115 225.17026,383.76572 222.19754,383.02254 C 216.84956,381.68553 216.76685,379.36118 218.29228,373.25943 C 219.27312,369.33607 221.66441,366.51519 223.17383,363.49633 C 225.23775,359.36849 228.4011,354.36381 230.98434,351.78058 C 234.03063,348.73429 236.66422,343.34972 238.79482,339.08855 C 242.31999,332.0382 243.27612,330.47759 239.77112,323.46759 C 237.27382,318.473 233.30595,322.79491 230.00801,324.44388 C 224.19035,327.35272 221.52038,331.75581 218.29228,337.13593 C 216.16752,340.6772 213.26019,344.27119 211.45811,347.87534 C 209.10115,352.58928 209.85416,357.22013 208.52918,362.52002 C 207.21774,367.76586 205.88301,370.86925 204.62394,377.16468 C 203.68965,381.83608 201.16103,386.66344 198.76607,389.85672 C 195.85791,393.73427 195.83712,384.1183 195.83712,380.09361 C 195.83712,373.1833 194.86083,367.52618 194.86083,360.56739 C 194.86083,355.37103 196.81346,350.2342 196.81346,344.94641 C 196.81346,340.04938 199.82118,332.91547 200.71869,329.32545 C 202.19471,323.42129 202.54225,319.23135 203.64764,313.70447 C 204.71363,308.37449 207.39392,301.64822 208.52918,297.10718 C 209.99268,291.25319 210.25363,286.82413 212.43442,282.46253 C 215.86263,275.60613 216.90982,270.41878 218.29228,264.88894 C 219.7952,258.87724 216.25857,253.98733 214.38704,250.24428 C 212.26837,246.00691 209.39515,243.18941 207.55288,239.50487 C 205.26466,234.92843 203.40513,232.4282 200.71869,229.74177 C 196.25415,225.27722 191.82402,228.00491 189.97928,231.69437 C 187.16554,237.32182 185.45343,240.03474 184.12141,245.36271 C 182.86885,250.37294 181.19248,256.82289 181.19248,262.93631 C 181.19248,268.94702 179.23984,274.13332 179.23984,279.5336 C 179.23984,286.05746 178.26353,291.45199 178.26353,298.08351 C 178.26353,303.87558 179.23984,308.98391 179.23984,314.6808 C 179.23984,322.3825 180.08944,330.80865 178.26353,338.11222 C 176.51643,345.10077 178.26353,355.27984 178.26353,362.52002 C 178.26353,367.96322 181.19248,372.68389 181.19248,379.11728 C 181.19248,384.15143 182.16879,390.97528 182.16879,396.6909 C 182.16879,405.29897 177.17726,399.39986 175.3346,395.71456 C 173.77683,392.59901 174.35829,383.89939 174.35829,381.06992 C 174.35829,375.44877 171.76867,371.68771 170.45306,366.42526 C 168.94736,360.40243 166.92658,354.27188 165.57149,348.85167 C 164.36113,344.01018 162.87836,339.05546 161.66625,334.20699 C 160.46161,329.38838 159.82142,323.8987 158.73732,319.56235 C 157.35492,314.03277 157.76101,307.8416 157.76101,301.98875 C 157.76101,295.24596 156.78471,289.07408 156.78471,282.46253 C 156.78471,276.11147 155.80842,270.34461 155.80842,263.91263 C 155.80842,258.05476 155.80842,252.1969 155.80842,246.33905 C 155.80842,241.9406 152.73662,236.9808 151.90314,233.647 C 150.66439,228.69195 147.39242,224.8602 143.11636,224.8602 C 138.10525,224.8602 135.77882,227.06451 132.37695,228.76543 C 126.0613,231.92325 122.42781,222.53554 120.6612,219.00234 C 118.82776,215.33546 114.86003,212.18234 110.8981,211.19185 C 106.56156,210.10773 105.21124,216.7077 104.06392,219.00234 C 101.19505,224.74014 103.94366,232.06937 105.04025,237.55224 C 106.29635,243.83272 107.96919,246.95601 107.96919,253.17323 C 107.96919,259.58398 109.65836,267.4769 110.8981,273.67575 C 111.82448,278.3076 113.57301,282.4228 114.80336,287.3441 C 115.28348,289.26452 115.45422,291.24933 115.77967,293.20194 C 116.7475,299.00889 120.61098,304.71674 121.63753,308.82293 C 123.02584,314.37612 127.54428,318.68383 130.42432,324.44388 C 132.97155,329.53835 136.20226,335.02346 138.23479,339.08855 C 141.29689,345.21269 144.11896,348.90427 147.02161,354.70952 C 149.85032,360.36695 152.23781,365.8112 153.85577,372.28311 C 154.97512,376.76047 156.88069,381.45383 157.76101,384.97515 C 159.64744,392.52084 152.46049,381.20829 151.90314,380.09361 C 150.16107,376.60942 149.04137,373.32657 146.0453,370.33049 C 142.1742,366.45941 140.57434,360.80697 137.25849,356.66215 C 134.84127,353.64062 133.15792,348.07038 132.37695,344.94641 C 131.09948,339.83658 128.07295,337.49358 126.51908,331.27806 C 125.22416,326.09846 121.64599,322.52508 120.6612,318.58604 C 119.47662,313.84766 115.86542,310.94708 113.82704,306.87028 C 111.44139,302.09901 109.69049,300.78112 106.01655,297.10718 C 100.43438,291.52503 97.892358,291.87677 95.277142,297.10718 C 93.556511,300.5484 94.13586,307.18671 95.277142,311.75185 C 96.17723,315.35227 97.781188,319.81539 98.206077,321.51497 C 98.27592,321.79435 88.580197,326.32791 88.442968,326.39651 C 83.959337,328.63831 85.462337,334.97651 86.490333,339.08855 C 87.315409,342.38884 92.931839,344.11602 96.253443,344.94641 C 100.37062,345.97571 103.10243,348.86648 106.01655,351.78058 C 109.12244,354.8865 111.86366,357.62768 114.80336,360.56739 C 117.87494,363.63899 119.61235,365.37639 122.61383,368.37786 C 126.1468,371.91083 127.68275,375.13639 131.40062,380.09361 C 134.12289,383.72329 139.17763,387.83715 141.16373,391.80933 C 143.13461,395.75106 149.37233,400.99424 152.87947,404.50137 C 155.61814,407.24006 157.43043,411.97359 158.73732,415.24078 C 161.79143,422.87605 156.2549,420.72212 153.85577,420.12233 C 149.58871,419.05556 146.40852,416.88686 141.16373,414.26448 C 137.27203,412.31863 134.4067,409.42148 130.42432,407.43031 C 125.93257,405.18444 123.31528,402.41132 119.68491,400.59613 C 114.72909,398.11823 111.52618,395.54046 107.96919,393.76196 C 102.62943,391.09206 101.00814,390.31316 95.277142,388.88039 C 89.055417,387.32497 86.949097,386.46901 83.561398,389.85672 C 82.755183,390.66293 91.63551,401.69352 92.348206,402.54875 C 95.055245,405.79721 89.516998,414.06904 88.442968,416.21709 C 85.635979,421.83109 86.074541,423.81967 90.395572,425.98019 C 93.655169,427.60999 102.29466,425.98019 106.01655,425.98019 C 111.4351,425.98019 116.42164,425.0039 121.63753,425.0039 C 127.7602,425.0039 133.61998,425.55872 139.21113,426.9565 C 145.55105,428.54152 152.21219,428.25415 158.73732,429.88544 C 167.09527,431.97492 174.97568,435.0757 182.16879,438.67225 C 187.86791,441.52179 189.34617,445.03158 193.88452,448.43535 C 195.18627,449.41166 196.48801,450.38796 197.78976,451.36429 z"], [0xd86a3c,"M 271.01306,413.28815 C 276.8051,417.63219 263.79415,407.04557 258.32102,401.57243 C 254.19894,397.45033 251.26584,394.51724 248.55793,391.80933 C 245.59542,388.84685 244.53604,383.29906 243.67636,378.14097 C 242.91265,373.55867 248.34147,370.14053 251.48686,369.35419 C 255.41055,368.37325 260.48549,375.12686 263.20257,377.16468 C 266.84393,379.89569 268.61598,382.91142 272.96568,383.99885 C 277.39975,385.10735 275.98919,371.49594 275.89463,371.30681 C 273.97745,367.47245 267.58785,364.95266 265.15521,362.52002 C 260.90619,358.271 259.75071,357.95279 258.32102,350.80427 C 257.0518,344.45815 257.78591,341.22901 259.29734,335.18332 C 260.48725,330.42359 263.20607,327.37194 267.10781,326.39651 C 270.89206,325.45045 272.52097,328.88073 274.9183,331.27806 C 278.25846,334.61822 277.84723,341.33818 277.84723,345.92274 C 277.84723,353.25761 280.85301,354.78639 282.72879,356.66215 C 285.2172,359.15054 289.28985,345.06258 289.56296,343.9701 C 290.62183,339.7347 289.75118,333.98354 288.58664,329.32545 C 287.34395,324.35457 285.11996,318.38756 283.7051,312.72816 C 282.2487,306.90263 285.67818,301.90697 286.63404,298.08351 C 287.60623,294.19465 292.08877,289.69984 294.44451,287.3441 C 298.32159,283.46699 301.76616,281.60842 306.16026,280.50991 C 312.19034,279.00238 314.04813,282.77212 314.94704,286.36776 C 316.13345,291.11342 311.79246,297.55848 310.06549,301.01245 C 307.56876,306.00587 305.27521,309.43418 304.20762,313.70447 C 303.31289,317.28341 301.27867,321.51514 300.30238,325.42021 C 298.37135,333.14433 306.64729,332.86485 309.08916,332.25439 C 310.06014,332.01164 314.37895,318.7459 314.94704,317.6097 C 317.07536,313.35308 319.30759,310.32024 322.75752,306.87028 C 326.60289,303.02495 330.64095,298.01055 333.49696,295.15457 C 337.14718,291.50436 338.28293,289.83264 343.26004,287.3441 C 349.71842,284.11489 353.52001,279.82475 359.85732,278.55729 C 365.87664,277.35344 368.86974,278.6701 372.54937,280.50991 C 375.3874,281.92894 377.80915,288.85698 378.40723,291.24933 C 380.13136,298.14581 378.26572,298.225 374.502,301.98875 C 369.15735,307.33337 365.69639,308.82293 357.90472,311.75185 C 353.19491,313.52232 345.56351,314.9554 344.23637,317.6097 C 342.92213,320.23819 337.08547,324.7606 335.44956,326.39651 C 332.71179,329.13428 329.58163,330.79496 326.66278,332.25439 C 323.29001,333.94076 321.42277,338.4707 318.85228,341.04117 C 314.67099,345.22245 313.69679,348.26871 312.99443,351.78058 C 312.16471,355.92911 321.32561,349.43743 324.71014,346.89903 C 329.9583,342.96291 336.74365,339.41781 341.30743,337.13593 C 347.96381,333.80774 349.65942,335.18332 355.95208,335.18332 C 360.30272,335.18332 363.47312,337.8228 365.71519,340.06487 C 368.48779,342.83746 371.34459,345.94353 373.52566,348.85167 C 377.36681,353.97315 369.24016,358.31676 366.6915,359.59109 C 362.01878,361.92745 354.22227,363.79773 350.09422,365.44892 C 344.48174,367.69393 339.61565,369.71192 334.47325,372.28311 C 328.74352,375.14799 324.23039,371.91491 318.8523,373.2594 C 313.32012,374.64248 308.06456,376.00278 302.25499,382.04621 C 295.96183,388.59273 297.53667,385.29855 295.42081,393.76194 C 294.70968,396.60656 302.19638,395.77319 302.25499,395.71456 C 306.19246,391.77712 311.0647,391.07137 315.92333,389.85672 C 321.21176,388.5346 324.32161,387.90409 330.56801,387.90409 C 338.9702,387.90409 339.61577,388.94793 341.30743,395.71456 C 341.85242,397.89453 335.40374,404.88791 333.49696,407.43031 C 329.81172,412.34394 323.67816,413.80416 318.85228,416.21709 C 313.42391,418.9313 306.23396,417.9072 301.27869,419.14603 C 294.40321,420.86489 288.33697,417.19343 282.72879,417.19343 C 280.07763,417.19343 273.57705,414.31375 271.01306,413.28815 z"], [0xd83c3c,"M 321.78121,522.63496 C 322.85654,517.7961 312.54647,518.99389 308.11286,516.77711 C 303.8605,514.6509 299.17293,509.7898 296.39715,507.01399 C 293.70101,504.31788 293.21832,497.22762 292.49191,494.32194 C 291.09228,488.72347 293.22727,482.59368 294.44451,477.72466 C 295.423,473.81073 299.55385,470.7766 303.23132,468.93788 C 307.16408,466.9715 309.65487,470.4799 312.0181,472.84312 C 315.52812,476.3531 317.9878,478.92466 319.82861,482.60623 C 322.18575,487.32053 325.62308,487.716 328.61539,488.46407 C 330.93512,489.04402 332.52063,479.31208 332.52063,476.74836 C 332.52063,471.89106 330.17814,467.18182 328.61539,464.05631 C 326.8965,460.61853 325.89718,456.11241 324.71014,451.36429 C 323.16743,445.19336 324.11618,440.07189 325.68644,433.79068 C 326.70979,429.69727 334.9232,427.48287 336.42586,425.98019 C 340.06502,422.34106 343.90871,424.67627 346.18898,426.9565 C 349.26301,430.03054 348.29346,434.15954 347.16529,438.67225 C 346.05833,443.10011 344.42113,447.69623 343.26004,452.3406 C 342.01275,457.32977 349.25248,459.45248 352.04684,460.15108 C 357.41823,461.49394 358.47821,456.07514 359.85732,453.31689 C 362.67672,447.6781 363.87085,443.33728 365.71519,439.64855 C 368.16139,434.75616 368.64414,430.52944 368.64414,425.0039 C 368.64414,419.79691 368.64414,414.58993 368.64414,409.38291 C 368.64414,404.43874 369.71017,398.28456 370.59674,394.73826 C 371.64895,390.52944 374.74899,386.68077 377.4309,383.99885 C 380.35857,381.0712 383.31521,379.09084 386.21773,376.18838 C 389.3233,373.08275 395.01109,370.91364 398.90977,369.35419 C 401.07142,368.48954 405.46711,378.01001 405.74394,379.11728 C 406.9847,384.08039 406.31892,387.73044 403.79131,392.78563 C 401.99133,396.3856 400.67337,399.99785 398.90977,403.52507 C 396.57871,408.18713 392.44179,412.35239 390.12297,416.21709 C 387.41017,420.73841 388.36258,423.43578 390.12297,426.9565 C 391.15356,429.01769 403.65968,425.22549 404.7676,425.0039 C 408.72673,424.21206 413.89399,419.46438 416.48336,418.16972 C 420.79397,416.01441 423.69614,415.05148 427.22277,413.28815 C 431.58227,411.10843 433.25459,409.78411 437.96219,407.43031 C 442.78517,405.0188 447.18522,409.81918 448.70159,411.33554 C 451.90274,414.53671 454.38905,417.48802 455.53577,422.07495 C 456.13819,424.48459 449.91201,429.65135 448.70159,430.86176 C 445.5716,433.99177 442.29215,435.53092 437.96219,437.69594 C 434.61773,439.36815 428.14132,438.67225 423.31753,438.67225 C 419.71464,438.67225 412.36014,439.94712 409.64917,440.62485 C 404.46171,441.92174 400.73911,441.3879 395.98083,442.57748 C 391.496,443.69869 388.71184,444.96491 385.24142,448.43535 C 383.05255,450.62423 376.53064,453.2789 374.502,454.2932 C 368.412,457.33821 365.71519,456.74656 365.71519,464.05631 C 365.71519,470.64839 368.13602,469.91419 374.502,469.91419 C 378.7218,469.91419 383.30778,467.46392 386.21773,466.00894 C 389.89956,464.16801 392.69507,462.1929 396.95713,461.12737 C 401.4161,460.01263 404.20016,458.34032 408.67288,457.22213 C 412.64934,456.22803 416.94127,455.15505 420.38859,454.2932 C 425.95476,452.90168 429.95795,456.05208 432.10431,458.19846 C 435.86926,461.96342 436.29596,464.86337 435.03324,469.91419 C 433.82716,474.73857 432.01435,475.55046 427.22277,476.74836 C 422.36867,477.96189 417.49555,481.37687 412.57812,482.60623 C 406.68703,484.07899 404.15366,486.51147 397.93344,486.51147 C 393.88652,486.51147 389.1059,489.4506 385.24142,490.4167 C 380.74205,491.54156 374.50632,492.36935 368.64414,492.36935 C 361.94771,492.36935 354.41882,494.70526 348.14161,496.27459 C 343.14312,497.52419 340.95812,499.55282 337.4022,503.10875 C 334.20047,506.31046 334.09929,508.62904 339.3548,509.94293 C 343.80153,511.0546 346.66646,510.06765 351.07055,508.9666 C 355.39833,507.88467 359.46209,506.86873 362.78626,506.0377 C 367.91895,504.7545 373.71098,505.06136 379.38355,505.06136 C 383.4574,505.06136 387.92616,508.29533 390.12297,509.94293 C 394.58267,513.2877 395.33156,514.49257 394.0282,519.70603 C 392.90882,524.18366 390.15798,527.26369 385.24142,528.49282 C 380.22454,529.74705 377.09702,530.28485 372.54937,531.42176 C 367.44785,532.69712 362.74577,533.37439 356.92838,533.37439 C 351.43461,533.37439 345.16695,532.38664 341.30743,531.42176 C 336.05914,530.10968 330.00417,528.59593 325.68644,527.51653 C 323.66487,527.01111 323.08297,524.26213 321.78121,522.63496 z"]]; MySquiggles = []; for (path in paths) { MySquiggles.push(new Squiggle(path[0],path[1])); } for (s in MySquiggles) { addChild(s); } Field = new VectorField(25,17,new Vec2(640,480)); addChild(Field); LastMouse = new Vec2(0,0); Puffing=false; flash.Lib.current.stage.addEventListener("enterFrame",Update); flash.Lib.current.stage.addEventListener(MouseEvent.MOUSE_UP, Mouse); flash.Lib.current.stage.addEventListener(MouseEvent.MOUSE_DOWN, StartMouse); flash.Lib.current.stage.addEventListener(MouseEvent.MOUSE_MOVE, MouseMove); } function StartMouse(e:MouseEvent) { Puffing = true; LastMouse.x = e.localX; LastMouse.y = e.localY; } function Mouse(e:MouseEvent) { Puffing=false; } function MouseMove(e:MouseEvent) { if (Puffing) { Field.Puff(new Vec2(e.localX,e.localY), new Vec2((e.localX-LastMouse.x)*0.3, (e.localY-LastMouse.y)*0.3)); LastMouse.x = e.localX; LastMouse.y = e.localY; } } function Update(e:Event) { for (s in MySquiggles) { s.Update(Frame,Field); } //Field.Draw(); Field.Update(Frame); Frame++; } static function main() { var m:Matisse = new Matisse(); flash.Lib.current.addChild(m); } }