diff options
| author | git@eclectronics.org <git@eclectronics.org@eclectronics.org> | 2012-02-16 16:46:43 +0000 |
|---|---|---|
| committer | git@eclectronics.org <git@eclectronics.org@eclectronics.org> | 2012-02-16 16:46:43 +0000 |
| commit | 5a68500983aba528b0add0d2bc22abfc092c508a (patch) | |
| tree | 3cfd8d2dd1a382ccb672be6cefb02d03eaa643a2 | |
| parent | 6cc27b0a312caf61c5f6ef84cf3f089236d7fadf (diff) | |
drawing 3d calpaths
| -rw-r--r-- | bezierstroke.pde | 166 | ||||
| -rw-r--r-- | data/countries_named_mercator.svg | 10 | ||||
| -rw-r--r-- | parsecalldata.pde | 7 | ||||
| -rw-r--r-- | vodaviz.pde | 109 |
4 files changed, 260 insertions, 32 deletions
diff --git a/bezierstroke.pde b/bezierstroke.pde index 2cb85de..5070f9b 100644 --- a/bezierstroke.pde +++ b/bezierstroke.pde @@ -26,3 +26,169 @@ class bezierstroke { endShape(); } } +RPoint perpoint(RPoint p1,RPoint p2,float d) { + //returns a point left distance d of perpendicular line between points + float h=atan2(p2.y-p1.y,p2.x-p1.x); + return new RPoint(p2.x+(cos(h+HALF_PI)*d),p2.y+(sin(h+HALF_PI)*d)); +} + +class gradientstroke { + float startsize,endsize,mpfract,raisefract,bezierfract; + float[] transpos; + float[] transamt; + color col; + gradientstroke(float _s,float _e,float[] _p, float[] _a,color _c){ + startsize=_s; + endsize=_e; + transpos=_p; + transamt=_a; + col=_c; + } + void drawstroke(RPoint Sp,RPoint Ep) { + drawstroke(Sp,Ep,col); + } + void drawstroke(RPoint Sp,RPoint Ep,color _col) { + noStroke(); + fill(red(_col),green(_col),blue(_col),255); + + //put ellipses in a seperate layer + //ellipse(Sp.x,Sp.y,startsize,startsize); + //ellipse(Ep.x,Ep.y,endsize,endsize); + + //construct quads along path + //path is straight, curve comes from 3D/ raise + //how to deal with badly formatted control arrays? bother? + //3d stage in between + noFill(); + + float spos=0.0; + float step=.001; //optimise + + //quad corner points + //these are perpedicular on the screen as we are making a gradient line system + RPoint L0,L1,p0,p1,p2,p3; + p0=new RPoint(0,0); + p1=p0; + L0=Sp; + boolean notfirst=false; + for (int i=0;i<transpos.length-1;i++) { + float transeg=transpos[i+1]-transpos[i]; + for (float u=0;u<transeg-step;u+=step) { + float gradamt=u/transeg; + float b=255.0*((transamt[i]*(1-gradamt))+(transamt[i+1]*gradamt)); + + //find new point on line + L1=new RPoint(lerp(Sp.x,Ep.x,transpos[i]+u),lerp(Sp.y,Ep.y,transpos[i]+u)); + float lw=lerp(startsize,endsize,transpos[i]+u)/2; + p2=perpoint(L0,L1,lw); + p3=perpoint(L0,L1,-lw); + if (notfirst) { + fill(red(_col),green(_col),blue(_col),b); + beginShape(); + vertex(p0.x,p0.y); + vertex(p2.x,p2.y); + vertex(p3.x,p3.y); + vertex(p1.x,p1.y); + endShape(); + } + notfirst=true; + p0=p2; + p1=p3; + L0=L1; + + /* + //temporarily draw line in 2D + strokeWeight(((1-(transpos[i]+u))*startsize)+((transpos[i]+u)*endsize)); + stroke(red(col),green(col),blue(col),b); + line(lerp(Sp.x,Ep.x,transpos[i]+u),lerp(Sp.y,Ep.y,transpos[i]+u),; + */ + + + } + } + } + +} + +class gradientstroke3D { + float startsize,endsize,mpfract,raisefract,bezierfract; + float[] transpos; + float[] transamt; + color col; + sphereMap smap; + float hw,hh; + gradientstroke3D(float _s,float _e,float[] _p, float[] _a,color _c,sphereMap _sp){ + startsize=_s; + endsize=_e; + transpos=_p; + transamt=_a; + col=_c; + smap=_sp; + hw=(getWidth()/2); + hh=(getHeight()/2); + } + void drawstroke(RPoint Sp,RPoint Ep) { + drawstroke(Sp,Ep,col); + } + void drawstroke(RPoint Sp,RPoint Ep,color _col) { + noStroke(); + fill(red(_col),green(_col),blue(_col),255); + + //put ellipses in a seperate layer + //ellipse(Sp.x,Sp.y,startsize,startsize); + //ellipse(Ep.x,Ep.y,endsize,endsize); + + //construct quads along path + //path is straight, curve comes from 3D/ raise + //how to deal with badly formatted control arrays? bother? + //3d stage in between + noFill(); + + float spos=0.0; + float step=.001; //optimise + + //quad corner points + //these are perpedicular on the screen as we are making a gradient line system + RPoint L0,L1,p0,p1,p2,p3; + p0=new RPoint(0,0); + p1=p0; + L0=Sp; + boolean notfirst=false; + for (int i=0;i<transpos.length-1;i++) { + float transeg=transpos[i+1]-transpos[i]; + for (float u=0;u<transeg-step;u+=step) { + float gradamt=u/transeg; + float b=255.0*((transamt[i]*(1-gradamt))+(transamt[i+1]*gradamt)); + + //find new point on line + L1=smap.per(new RPoint(lerp(Sp.x,Ep.x,transpos[i]+u),lerp(Sp.y,Ep.y,transpos[i]+u)),4+(sin((transpos[i]+u)*PI)*0.1)); + float lw=lerp(startsize,endsize,transpos[i]+u)/2; + p2=perpoint(L0,L1,lw); + p3=perpoint(L0,L1,-lw); + if (notfirst) { + fill(red(_col),green(_col),blue(_col),b); + beginShape(); + vertex(p0.x+hw,p0.y+hh); + vertex(p2.x+hw,p2.y+hh); + vertex(p3.x+hw,p3.y+hh); + vertex(p1.x+hw,p1.y+hh); + endShape(); + } + notfirst=true; + p0=p2; + p1=p3; + L0=L1; + + /* + //temporarily draw line in 2D + strokeWeight(((1-(transpos[i]+u))*startsize)+((transpos[i]+u)*endsize)); + stroke(red(col),green(col),blue(col),b); + line(lerp(Sp.x,Ep.x,transpos[i]+u),lerp(Sp.y,Ep.y,transpos[i]+u),; + */ + + + } + } + } + +} diff --git a/data/countries_named_mercator.svg b/data/countries_named_mercator.svg index 34c5019..4ec965a 100644 --- a/data/countries_named_mercator.svg +++ b/data/countries_named_mercator.svg @@ -31,10 +31,10 @@ id="namedview3653" showgrid="false" inkscape:zoom="2.9881389" - inkscape:cx="161.85424" + inkscape:cx="346.38381" inkscape:cy="365.52618" - inkscape:window-x="-8" - inkscape:window-y="-8" + inkscape:window-x="1016" + inkscape:window-y="4" inkscape:window-maximized="1" inkscape:current-layer="svg2" /><metadata id="metadata1348"><rdf:RDF><cc:Work @@ -3807,11 +3807,9 @@ id="BOTSWANA" style="fill:none;stroke:#6e7072;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:3.8499999" inkscape:label="#polyline130" /><path - inkscape:connector-curvature="0" id="BRAZIL" style="fill:none;stroke:#6e7072;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:3.8499999" - d="m 239.779,314.45 -0.24,-0.24 0,-0.24 -0.48,-0.24 -0.24,-0.719 -0.24,-0.241 0.24,-0.24 -0.24,0 -0.24,-0.24 -0.24,-0.24 0,-0.239 0,-0.242 0.24,0 0.24,0 0,-0.479 0,-0.48 0.72,-0.48 0.24,-0.24 0.24,0 0,-0.241 0,-0.48 0,-0.239 0.48,-0.961 0,-0.48 0,-0.239 0,-0.24 0.48,-0.24 0.24,0 0.24,-0.241 0.24,0 0,-0.24 0.24,0 0.96,-0.48 0.24,-0.24 0,0.24 0.48,-0.24 0.24,0 0,-0.24 0.24,0 0,0.24 0,-0.24 0.24,0.24 0.24,-0.24 0.24,0 0,-0.24 0.24,-0.24 0.24,0.24 0,-0.24 0,0.24 0.24,-0.24 0,0.24 0.24,-0.24 0.24,0 0.24,0.48 0.24,-0.24 0,0.24 0.24,0 0,-0.24 0.24,-1.44 0.24,-1.441 0.24,-1.199 0.24,-1.441 0,-0.24 0.24,-0.24 0,-0.24 -0.24,-0.48 -0.24,-0.24 0,-0.24 0,-0.24 0,-0.24 -0.72,-0.48 -0.24,-0.24 0,-1.44 0,-0.24 0.24,0.24 0.48,-0.24 0.24,0 0.24,-0.24 0.24,0.24 0.24,0 0.24,0 0,-0.24 0,-0.24 -0.24,0 0,-0.24 -0.48,0 0,-0.24 -0.48,0 -0.24,0 0,-1.2 0.24,0 0.48,-0.241 0.24,0.241 2.4,0 -0.24,-0.241 0.24,-0.48 0.24,0.241 0.24,0.239 0,0.241 0.48,-0.241 0.48,-0.72 0.24,0 0.48,0.72 0.24,0.48 0,0.721 0.24,0 1.2,0.96 0.48,0 0.24,0 0.24,-0.24 0.48,-0.24 0.24,0 0,0.24 0,0.24 0,0.24 0.24,0 0,-0.48 0.24,0 0.24,0 0,-0.24 0,-0.24 0.24,0 0.24,0 0.24,-0.24 0.24,0 0.48,-0.48 0.24,0 0,0.24 0.24,-0.24 0.48,-0.48 0,-0.48 0.24,0 0.24,-0.241 0.24,0 0.72,-0.24 0,-0.24 0,-0.24 -0.24,0 -1.2,-0.24 0,-0.24 0,-0.48 -0.48,-0.48 0,-0.72 0.24,-0.24 0,-0.24 -0.72,-0.48 -0.48,-0.48 -0.24,-0.24 0.24,0 0.24,0 0,0.24 0.72,0 0.24,0 0.24,0.48 0.48,-0.24 0.48,0.24 0.24,0 0,-0.24 0.24,0 0,0.24 0.72,0.48 0.24,0.24 0.24,-0.24 0,-0.24 0,-0.24 0,-0.24 0.48,0 0,-0.24 0.24,-0.24 0.24,0.24 0.48,0 0.48,0 0.24,-0.24 0.24,0 0.24,-0.24 0,-0.24 0.24,0 0.24,0 0.48,0 0.24,-0.24 0,-0.24 0.24,0 0.24,-0.24 0.239,-0.24 -0.239,-0.481 m 0,0 0.48,0 0.48,-0.239 0.24,0 0,0.239 0.24,0.241 0,0.72 -0.24,0.24 0,0.24 0.72,0 0.24,0.24 -0.24,0 0,0.24 0,0.24 0.24,0 0,0.24 0.24,0 -0.48,0.72 -0.24,0.24 0,0.24 0,0.24 -0.24,0.72 0,0.72 0.24,0.48 0.24,0.24 0,0.721 0.24,0.239 0,0.241 0.24,0 0.48,0.72 0.48,0 0.24,0 0.24,0.24 0.24,0 0,-0.24 0.48,0.24 0,-0.24 0,-0.24 0.24,-0.241 0.24,0 0.48,0.241 0,-0.241 0,-0.239 0.48,0 0.48,0 0.48,-0.48 0,-0.241 0.239,0.241 0.241,-0.241 0,0.241 0.24,0 0.72,0 0.24,0 1.2,0.239 0,-0.239 0,-0.241 -0.48,-0.48 0.24,-0.24 0.24,-0.24 0.48,0.24 0.72,0 0,-0.24 0.24,0 0.24,-0.24 0,0.24 0.239,-0.24 0,0.24 0.241,0.24 0.239,0 0,-0.24 0.241,0 0,0.24 0,0.24 0.239,0 0.241,0 0.48,0.24 0.24,0 0.24,0 0,-0.24 0.24,0 0,-0.24 0.24,0 0.24,0.24 0.24,0 0.24,-0.24 0.24,0.24 0,0.24 0.24,-0.24 0.48,0.24 0.72,-0.72 0.24,-0.72 0.24,-0.48 0,-0.24 0.479,-0.48 0.48,-0.96 0.48,-0.24 0.241,-0.48 0,-0.24 0.48,0.24 0.239,0.48 0,0.48 0,-0.24 0.241,0 0,1.2 0.239,0.72 0,0.24 0.241,0.241 0,0.239 0,0.24 0.24,0.24 0,0.48 -0.24,0 0.24,0.24 0,-0.24 0.24,0 0,0.24 0.24,0.48 0.96,0 0.24,0.241 0,0.239 0,0.481 -0.48,0.24 0.48,0 0,0.24 -0.48,0.24 -0.24,0.24 -0.24,0.24 -0.48,0.96 -0.48,0.24 -0.241,0 -0.239,0.48 -0.241,0 -0.239,0.24 -0.241,0.48 -0.239,0.24 -0.48,0.48 0,0.48 -0.241,0.24 0,0.24 0,0.24 -0.239,0.24 -0.241,0 -0.239,-0.24 -0.96,0.48 0.96,0 0,0.241 0.239,0 0.241,0 0.719,-0.481 0.48,-0.24 0,-0.24 0.241,0 0.719,-0.48 0,-0.24 0.241,0.24 0,0.48 0,0.24 0,0.24 0.24,0.481 0.24,0.239 -0.24,0 0,0.241 -0.24,0 -0.241,-0.241 -0.48,0 0.241,0 -0.241,0 -0.239,0 0,-0.239 -0.241,0.239 -0.239,0 0.239,0 -0.239,0.48 0.239,0.481 0,0.24 0,-0.24 0,-0.481 0.241,-0.48 0.239,0.241 0.48,0.239 0,0.241 -0.239,0.24 0.239,0.48 0.241,0 -0.241,-0.24 -0.239,-0.24 0.239,-0.481 0.241,0 0,0.241 0,-0.241 0.24,-0.239 0,0.239 0,-0.239 0,-0.241 0.24,0 0.48,0.241 -0.24,0 0.24,0 0.24,0 0.24,0 0.24,-0.241 0.24,0.241 0.24,0.239 -0.24,0.241 0.24,0 0,-0.48 0.48,0 0.24,-0.241 0.24,-0.239 0,0.239 0,0.48 -0.24,0 0,0.241 0,0.24 0,0.48 -0.24,0.24 0.24,-0.24 0.24,-0.72 0.239,-0.48 0.48,-0.241 0.48,-0.72 0.241,0.24 0,-0.24 0.239,0.24 0.241,0.241 -0.241,-0.241 0.241,0 0.48,-0.24 -0.241,0 -0.48,0 0,-0.24 0.241,0 0.239,0 0,-0.48 0,-0.24 0.241,-0.24 0,-0.24 0.239,0 0.241,0 0.239,-0.24 0.241,0 0,0.24 0.239,-0.24 0.241,0 0,0.24 0.24,0 -0.24,0 0,-0.24 0.24,0 0,0.24 0,-0.24 0.24,0 0,0.24 0.24,0 -0.24,0 0.24,0 0,-0.24 0.24,0.24 0,0.24 0.24,-0.24 0,0.24 0.24,-0.24 0,0.24 0.24,0 0.24,0.24 -0.24,0 0.24,0 0,0.24 0.479,-0.24 0,0.24 0,-0.24 0,0.24 0.241,-0.24 0,0.48 0.239,-0.24 0,0.24 0.241,-0.24 0,0.24 0.239,0 0,0.24 0.241,-0.48 0,0.24 0.239,0.24 0.241,0 0,0.24 0,-0.24 0.239,0 -0.239,0.24 0,0.24 0.239,-0.24 0,-0.24 0.241,0 0,0.24 -0.241,0 0,0.24 0.241,0 -0.241,0.241 0.241,0.239 0.239,-0.239 -0.239,0 0,-0.241 0.239,-0.24 0,0.24 0.241,-0.24 0.239,0.24 0.241,-0.24 -0.241,0.481 0,-0.241 0.241,0.241 0,-0.241 0,0.241 0.239,0.239 -0.239,0 0.239,0 0,-0.239 0.241,0.239 -0.241,0.241 0.241,0 0.24,0 0,0.239 -0.24,0 0.24,0 -0.24,0.241 -0.241,0.24 0,0.24 0.241,-0.24 0.24,-0.24 0.24,0.48 -0.24,0 0,0.24 -0.481,0.24 0.241,0 0,0.24 0,0.239 -0.241,0.241 0,0.24 0.241,0 -0.48,0.24 0,0.24 0.239,0 -0.239,-0.24 0.48,0 0,-0.24 0.24,-0.24 0.24,-0.72 0,-0.24 0.48,-0.24 0.24,0 0,0.24 -0.24,0 0.24,0 -0.24,0.48 -0.241,0 -0.239,0.239 0.239,0 0,-0.239 0,0.239 0.241,-0.239 0.24,0 0,-0.24 0.24,0 0.24,-0.24 0.24,0.24 0,-0.24 0.24,0 0.239,0.24 0,-0.24 0,-0.24 0.241,0 0.96,0.24 0.719,0.48 0.241,0 0.239,0 0,0.239 0.241,0 0.48,0 -0.241,-0.239 0.48,0 0.48,0.48 0.241,0 0.239,0 0.241,0.24 0,-0.24 -0.241,0 0.481,-0.241 0.479,0 0,0.241 0.72,-0.241 1.201,0 0.239,0.241 0.241,0.24 0.48,0.24 0.239,0 0.721,0.48 0.48,0.48 0.48,0.24 0.719,0.48 0.721,0.72 0.24,0.24 0,0.24 0.48,0.24 0.48,0.24 0.239,0.24 0.48,0 0.241,0.241 0.48,0.24 0.239,0 0.721,0 0.239,-0.24 0.96,0.24 0.241,0 0.48,0.719 0,0.72 0.239,0.24 0,0.48 0.241,0.241 0.239,1.2 0,0.24 0.24,0.719 -0.24,0.481 0.24,0.24 -0.24,0 0,0.24 0,0.24 0,0.241 -0.239,0 0.239,0.239 -0.239,0.48 -0.241,1.201 -0.48,0.479 -0.239,0.24 -0.48,0.721 -0.241,0 0,-0.24 0,0.24 -0.239,0.239 0,-0.239 0,0.239 -0.241,0.481 -0.48,0.479 -0.239,0.481 -0.241,0 -0.719,0.48 -0.48,0.48 0,-0.24 0,-0.24 -0.241,0.24 0.241,0 0,0.24 -0.241,0.24 -0.239,0 0.239,0 0,0.239 0,0.241 -0.239,0.24 -0.241,0 0.241,-0.24 0,-0.241 -0.241,0.481 0,0.24 -0.239,0.479 -0.241,0.721 -0.72,0.72 -0.48,0.961 -0.48,0.239 -0.239,0 0.239,-0.239 -0.239,-0.24 -0.241,-0.241 -0.239,0.481 0,-0.24 -0.241,-0.241 0,0.241 0.241,0.24 0.239,0 -0.239,0.239 -0.241,0 0,0.24 0.241,0 -0.241,0.241 0,0.24 -0.239,0 0,0.479 0,-0.24 0,0.721 0,-0.241 -0.241,0 0.241,0.241 0,0.24 0,-0.24 0,0.24 0,0.24 0,0.239 0.239,-0.239 -0.239,-0.24 0.239,0 0,0.24 -0.239,0.96 0,1.2 0.239,0.959 0,0.482 0,0.479 -0.239,1.2 -0.241,0.96 0,0.96 0,0.241 0,0.24 -0.719,0.479 -0.241,0.481 -0.239,0.96 0,0.96 0,0.48 -0.241,0.481 -0.239,0.239 -0.241,0.48 -0.239,0 0,0.24 0,0.48 -0.241,-0.239 -0.239,0 0,0.239 0.239,0 0,0.24 -0.719,0.96 0,-0.239 -0.24,0.239 -0.241,0.48 -0.239,0.24 0,0.24 -0.24,0.241 0,0.24 0.24,0 0,0.96 -0.48,0.24 -0.96,0.24 -0.721,0.72 0,0.24 0.241,0 -0.241,0.24 0,0.24 -0.719,0 -1.44,0 0.239,-0.48 -0.239,-0.24 -0.48,0.24 0.239,0.24 0,0.24 -0.959,0.24 -0.72,0 0.48,0 0.24,-0.24 -0.48,-0.24 -0.24,0.24 -0.24,0 -0.241,0.24 0,-0.24 -0.239,0 -0.24,0 -0.481,0.24 0,0.24 0.241,0 0,0.239 0.24,0 -0.481,0 -0.239,0.242 -0.241,-0.242 0,0.242 -0.239,0 -0.241,0.239 -0.239,0 -0.241,0.24 0,0.24 -0.239,0.24 0,-0.24 -0.48,0 -0.721,0 0,0.24 -0.48,0.241 0,-0.241 -0.239,0 0.239,0.241 -0.239,0 -0.72,0.479 -0.48,0.24 -0.48,0.481 -0.48,0.239 -0.721,0.24 -0.239,0.48 -0.241,0 0.241,0 0,0.241 -0.241,0 -0.239,0.48 0,0.24 -0.241,-0.24 0.241,-0.241 -0.241,0 0,0.241 0,-0.241 -0.239,0 -0.241,0 0.241,0.241 -0.241,0.24 -0.239,-0.24 -0.241,0 0.241,0.24 -0.241,0 0.241,0 0.239,0 0.241,0 0,0.239 -0.48,0.481 -0.241,0 0.48,0 -0.239,0.719 -0.241,0 0,0.241 0.241,0.24 0,0.24 0,0.24 0,0.24 0.239,0 -0.239,0.24 0.239,0.24 -0.239,0.24 0.239,0 0,0.24 0,-0.24 -0.239,0.24 0.239,0.24 -0.239,0.24 0.239,0.24 -0.239,0.239 0.239,0.242 -0.239,0.239 0,0.24 -0.241,0.721 0,0.24 0,-0.24 -0.239,-0.241 0,0.481 0.239,0 -0.719,0.48 -0.72,0.48 -0.72,0.72 -0.48,0.72 -0.48,0.96 -0.24,0.959 -0.72,0.721 -0.72,0.96 -0.721,0.481 -0.96,0.719 -0.48,0.481 0,-0.24 0.241,-0.241 0,-0.24 -0.241,0 0,-0.239 0.241,0.239 0.239,0 0.241,0 -0.241,-0.239 0.48,0 0.48,-0.481 0.241,0 0.239,-0.24 0,-0.48 0,-0.24 0.48,0 0,0.24 0,-0.24 0,-0.24 0,-0.24 0.481,0 0,-0.239 0,-0.242 0,-0.479 0.24,0.24 0.24,-0.24 -0.24,-0.24 0,-0.24 -0.24,0.24 0.24,0 -0.24,0 -0.24,0.24 0,-0.24 -0.241,0.24 0,0.24 -0.239,-0.24 0.239,-0.24 -0.239,0 -0.241,-0.24 -0.239,-0.241 0,0.481 0.239,0.24 0.241,0 -0.241,0 -0.239,0.24 0,0.239 0,0.242 0,0.239 0,-0.239 0,-0.242 -0.241,0 0,0.242 0,0.239 -0.239,0.24 0,0.24 0.239,0 -0.239,0 -0.241,0.24 0,0.24 -0.48,0 -0.239,0.24 0,0.481 0,-0.241 -0.241,0 0,0.241 0.241,0 -0.241,0 -0.239,0.24 0,0.239 0.239,0 0,0.24 -0.239,0 0,0.241 0.239,-0.241 0,0.241 0,0.24 -0.479,0.239 -0.24,0.961 -0.48,0.72 -0.48,0.48 -0.96,0.72 -0.24,0 0,-0.24 0,-0.48 0,-0.48 0,-0.241 0.72,-0.72 0.24,0 -0.24,0 -0.24,-0.24 -0.24,0 -0.48,-0.48 -0.24,-0.479 -0.24,-0.241 -0.24,0 -0.24,-0.24 -0.72,-0.479 0,-0.241 -0.241,-0.24 -0.719,0 -0.241,-0.24 -0.239,0 -0.24,0 -0.48,-0.72 -0.24,-0.24 0,0.24 -0.24,0 -0.24,0.24 -0.48,0 0,-0.24 0.24,-0.24 -0.24,0 -0.24,-0.481 -0.24,-0.239 -0.72,-0.48 -0.24,-0.24 -0.48,0 -0.24,0 -0.241,0.24 -0.719,0 -0.241,-0.24 0.241,0 0.48,-0.241 0,-0.479 0.239,0 0.241,0 0,-0.24 0.72,-0.72 0.24,-0.24 0,-0.241 0.48,0 0,-0.239 0.24,-0.241 0,-0.239 0.48,-0.241 0,-0.239 0.24,-0.24 0.24,0 0.24,0 0,-0.241 -0.24,0 0.24,-0.24 0.48,-0.24 0.24,-0.24 0.24,-0.239 0.24,0 0.239,0 -0.239,0 0.239,0 0.241,-0.242 0.239,-0.479 0,0.24 0.48,-0.24 0.241,0 0,-0.24 0.239,0.24 0,-0.24 0,0.24 0.241,-0.24 0,-0.24 0.24,0 0.48,-0.24 0.24,-0.48 0,-0.24 0,-0.24 0,-0.72 0.24,-0.241 -0.48,-0.479 0,-0.24 0,-0.481 -0.24,0 -0.24,-0.239 0,0.239 0,-0.239 -0.24,0 0,0.239 -0.241,-0.239 -0.239,0.239 -0.241,0 -0.239,-0.479 0.48,-0.48 0,-0.241 0,-0.48 0.239,-0.479 0,-0.241 0,-0.24 0.241,0 -0.241,-0.24 0,-0.24 0.241,-0.239 -0.48,-0.241 -0.48,-0.24 -0.48,0.481 -0.72,0 -0.24,0 -0.24,-0.241 0,-0.48 0,-0.24 0,-0.239 -0.24,-0.242 0,-0.239 0,-0.48 0,-0.48 -0.24,-0.48 0,-0.241 -0.24,-0.239 -0.24,0 -0.48,0 -0.48,-0.24 0,-0.24 -0.24,0 -0.24,0.48 -0.24,0 -0.24,0 -0.24,0 -0.481,0 -0.239,-0.24 -0.48,0 -0.241,0 -0.48,0 -0.239,-0.24 0.239,-0.241 0,-0.24 0,-0.239 0,-0.48 0,-0.241 0,-0.24 0.241,0 0,-0.479 -0.241,-0.241 0,-0.239 0,-0.241 -0.239,0.241 0,-0.241 0,-0.48 -0.24,0 0,-0.24 0,-0.239 0.479,-0.481 -0.479,-0.48 0.72,-1.44 0.239,0 0,-0.24 -0.239,0 0.48,-1.44 0.24,0 -0.24,0 0,-0.24 -0.48,-0.96 -0.241,-0.241 0,-0.24 -0.719,0 -0.24,-0.239 -0.24,-0.721 0,-0.72 0.24,-0.24 0,-0.48 -0.24,0.24 -0.48,0 -1.44,-0.24 -1.68,0 0,-1.68 -0.721,-0.72 0.481,0 -0.24,-0.48 0.24,-0.48 0,-0.24 -0.24,-0.48 0,-0.241 0.24,-0.479 -0.24,-0.24 -0.72,-0.241 -0.48,-0.48 -0.24,0 -0.48,0 -0.24,0.24 -0.24,-0.24 -0.24,0 -0.24,0.24 0,-0.24 -0.48,-0.239 0,-0.481 -0.72,0 -0.24,-0.24 -0.24,0 -0.24,0 -0.48,-0.479 -0.24,-0.241 -0.24,0 -0.96,-0.48 -0.24,0 -0.24,0.24 -0.96,-0.24 -0.24,-0.24 0,-0.24 -0.48,0 0,-0.24 0,0.24 -0.24,-0.48 -0.24,0 0,-0.239 -0.24,-0.242 -0.24,0 0,-0.239 0,-0.24 -0.24,0 0,-0.24 0,-0.24 -0.24,0 0,-0.241 0.24,-0.479 0,-0.24 -0.24,0 0,-0.72 0,-0.24 0.24,0 0,-0.241 0,-0.479 0,-0.24 -0.24,-0.48 -0.24,0.48 -0.24,0 0,-0.241 -0.24,0 -0.48,0 -1.2,0.241 -0.48,0.24 -0.72,0.72 -0.24,0 -0.72,0.479 -0.24,0.241 -0.24,0 -0.24,0 -0.24,0 -0.48,0.48 -0.48,0.479 -0.48,0 0,-0.239 -0.24,0 -0.24,-0.24 -1.2,0 -0.72,0 -0.24,0 -0.48,0.24 -0.24,0 -0.24,-0.24 -0.24,0.24 0,-1.2 0,-1.2 0.24,-0.241 0,-0.239 -0.24,0 0.24,-0.24 0,-0.24 -0.24,0 -0.24,0.24 -0.24,0.479 -0.96,0.481 -0.48,0 -1.2,0 0,-0.24 0,-0.241 -0.24,0 0,-0.479 -0.48,0 -0.24,-0.24 -1.2,0 0.48,-0.481 0,-0.24 0,-0.239 -0.48,-0.481 m 47.04,-14.402 -0.24,0 0,-0.239 -0.48,-0.481 0,-0.72 0.24,0 0.24,0.24 0,-0.24 0.24,0 0,-0.24 -0.24,0.24 -0.24,0 -0.24,-0.24 0.24,-0.24 -0.24,-0.24 0.24,-0.48 0.24,0.24 0.24,0 -0.24,0 -0.24,-0.24 0.24,-0.48 0,-0.24 0.24,0 0.72,0 1.2,0.24 0.24,0 0.479,-0.24 0.48,0 1.201,0.24 0,0.24 0,0.24 -0.241,0.48 0,0.24 -0.239,0.24 0,0.24 -0.241,0.24 -0.239,0.48 -0.241,0.24 -0.48,0.241 -0.479,0 -0.24,-0.241 0,0.241 -0.24,0.239 -0.24,-0.239 0,0.239 -0.48,-0.239 -0.24,0.239 -0.48,0 0.24,0 -0.48,0 m 1.68,-3.36 -0.24,-0.24 0.48,-0.24 0.24,0 0.24,0.24 -0.24,0.24 -0.48,0 m -1.2,-0.96 -0.24,-0.24 0.24,-0.24 0.48,-0.24 0,0.24 -0.48,0.48 m -3.361,3.6 -0.239,0 0.239,-0.24 0,-0.24 0.48,-0.24 0,-0.48 0.241,-0.48 0.239,-0.24 0.48,0 0,0.24 -0.239,0.72 -0.721,0.72 -0.239,0.24 -0.241,0 m 0.96,-1.92 0,-0.24 0.241,0 0,-0.24 0.48,-0.24 0,0.24 -0.48,0.48 -0.241,0 m 1.201,-0.48 -0.241,0 -0.239,-0.24 0.239,-0.24 0.721,0 -0.48,0.48 m 1.68,-0.48 -0.72,-0.24 0,-0.24 1.44,-0.24 0,0.24 -0.24,0.24 -0.24,0.24 -0.24,0 m -0.96,-0.48 0.24,-0.48 -0.24,-0.24 0.24,-0.24 0,0.72 -0.24,0.24 m 4.079,58.088 0,-0.721 0.241,-0.24 0,0.24 -0.241,0.721 m -5.52,-55.688 0,-0.24 0.241,-0.24 0.48,-0.24 0,0.24 -0.241,0 -0.239,0.48 -0.241,0" - inkscape:label="#polyline154" /><polyline + d="m 239.779,314.45 -0.24,-0.24 0,-0.24 -0.48,-0.24 -0.24,-0.719 -0.24,-0.241 0.24,-0.24 -0.24,0 -0.24,-0.24 -0.24,-0.24 0,-0.239 0,-0.242 0.24,0 0.24,0 0,-0.479 0,-0.48 0.72,-0.48 0.24,-0.24 0.24,0 0,-0.241 0,-0.48 0,-0.239 0.48,-0.961 0,-0.48 0,-0.239 0,-0.24 0.48,-0.24 0.24,0 0.24,-0.241 0.24,0 0,-0.24 0.24,0 0.96,-0.48 0.24,-0.24 0,0.24 0.48,-0.24 0.24,0 0,-0.24 0.24,0 0,0.24 0,-0.24 0.24,0.24 0.24,-0.24 0.24,0 0,-0.24 0.24,-0.24 0.24,0.24 0,-0.24 0,0.24 0.24,-0.24 0,0.24 0.24,-0.24 0.24,0 0.24,0.48 0.24,-0.24 0,0.24 0.24,0 0,-0.24 0.24,-1.44 0.24,-1.441 0.24,-1.199 0.24,-1.441 0,-0.24 0.24,-0.24 0,-0.24 -0.24,-0.48 -0.24,-0.24 0,-0.24 0,-0.24 0,-0.24 -0.72,-0.48 -0.24,-0.24 0,-1.44 0,-0.24 0.24,0.24 0.48,-0.24 0.24,0 0.24,-0.24 0.24,0.24 0.24,0 0.24,0 0,-0.24 0,-0.24 -0.24,0 0,-0.24 -0.48,0 0,-0.24 -0.48,0 -0.24,0 0,-1.2 0.24,0 0.48,-0.241 0.24,0.241 2.4,0 -0.24,-0.241 0.24,-0.48 0.24,0.241 0.24,0.239 0,0.241 0.48,-0.241 0.48,-0.72 0.24,0 0.48,0.72 0.24,0.48 0,0.721 0.24,0 1.2,0.96 0.48,0 0.24,0 0.24,-0.24 0.48,-0.24 0.24,0 0,0.24 0,0.24 0,0.24 0.24,0 0,-0.48 0.24,0 0.24,0 0,-0.24 0,-0.24 0.24,0 0.24,0 0.24,-0.24 0.24,0 0.48,-0.48 0.24,0 0,0.24 0.24,-0.24 0.48,-0.48 0,-0.48 0.24,0 0.24,-0.241 0.24,0 0.72,-0.24 0,-0.24 0,-0.24 -0.24,0 -1.2,-0.24 0,-0.24 0,-0.48 -0.48,-0.48 0,-0.72 0.24,-0.24 0,-0.24 -0.72,-0.48 -0.48,-0.48 -0.24,-0.24 0.24,0 0.24,0 0,0.24 0.72,0 0.24,0 0.24,0.48 0.48,-0.24 0.48,0.24 0.24,0 0,-0.24 0.24,0 0,0.24 0.72,0.48 0.24,0.24 0.24,-0.24 0,-0.24 0,-0.24 0,-0.24 0.48,0 0,-0.24 0.24,-0.24 0.24,0.24 0.48,0 0.48,0 0.24,-0.24 0.24,0 0.24,-0.24 0,-0.24 0.24,0 0.24,0 0.48,0 0.24,-0.24 0,-0.24 0.24,0 0.24,-0.24 0.239,-0.24 -0.239,-0.481 m 0,0 0.48,0 0.48,-0.239 0.24,0 0,0.239 0.24,0.241 0,0.72 -0.24,0.24 0,0.24 0.72,0 0.24,0.24 -0.24,0 0,0.24 0,0.24 0.24,0 0,0.24 0.24,0 -0.48,0.72 -0.24,0.24 0,0.24 0,0.24 -0.24,0.72 0,0.72 0.24,0.48 0.24,0.24 0,0.721 0.24,0.239 0,0.241 0.24,0 0.48,0.72 0.48,0 0.24,0 0.24,0.24 0.24,0 0,-0.24 0.48,0.24 0,-0.24 0,-0.24 0.24,-0.241 0.24,0 0.48,0.241 0,-0.241 0,-0.239 0.48,0 0.48,0 0.48,-0.48 0,-0.241 0.239,0.241 0.241,-0.241 0,0.241 0.24,0 0.72,0 0.24,0 1.2,0.239 0,-0.239 0,-0.241 -0.48,-0.48 0.24,-0.24 0.24,-0.24 0.48,0.24 0.72,0 0,-0.24 0.24,0 0.24,-0.24 0,0.24 0.239,-0.24 0,0.24 0.241,0.24 0.239,0 0,-0.24 0.241,0 0,0.24 0,0.24 0.239,0 0.241,0 0.48,0.24 0.24,0 0.24,0 0,-0.24 0.24,0 0,-0.24 0.24,0 0.24,0.24 0.24,0 0.24,-0.24 0.24,0.24 0,0.24 0.24,-0.24 0.48,0.24 0.72,-0.72 0.24,-0.72 0.24,-0.48 0,-0.24 0.479,-0.48 0.48,-0.96 0.48,-0.24 0.241,-0.48 0,-0.24 0.48,0.24 0.239,0.48 0,0.48 0,-0.24 0.241,0 0,1.2 0.239,0.72 0,0.24 0.241,0.241 0,0.239 0,0.24 0.24,0.24 0,0.48 -0.24,0 0.24,0.24 0,-0.24 0.24,0 0,0.24 0.24,0.48 0.96,0 0.24,0.241 0,0.239 0,0.481 -0.48,0.24 0.48,0 0,0.24 -0.48,0.24 -0.24,0.24 -0.24,0.24 -0.48,0.96 -0.48,0.24 -0.241,0 -0.239,0.48 -0.241,0 -0.239,0.24 -0.241,0.48 -0.239,0.24 -0.48,0.48 0,0.48 -0.241,0.24 0,0.24 0,0.24 -0.239,0.24 -0.241,0 -0.239,-0.24 -0.96,0.48 0.96,0 0,0.241 0.239,0 0.241,0 0.719,-0.481 0.48,-0.24 0,-0.24 0.241,0 0.719,-0.48 0,-0.24 0.241,0.24 0,0.48 0,0.24 0,0.24 0.24,0.481 0.24,0.239 -0.24,0 0,0.241 -0.24,0 -0.241,-0.241 -0.48,0 0.241,0 -0.241,0 -0.239,0 0,-0.239 -0.241,0.239 -0.239,0 0.239,0 -0.239,0.48 0.239,0.481 0,0.24 0,-0.24 0,-0.481 0.241,-0.48 0.239,0.241 0.48,0.239 0,0.241 -0.239,0.24 0.239,0.48 0.241,0 -0.241,-0.24 -0.239,-0.24 0.239,-0.481 0.241,0 0,0.241 0,-0.241 0.24,-0.239 0,0.239 0,-0.239 0,-0.241 0.24,0 0.48,0.241 -0.24,0 0.24,0 0.24,0 0.24,0 0.24,-0.241 0.24,0.241 0.24,0.239 -0.24,0.241 0.24,0 0,-0.48 0.48,0 0.24,-0.241 0.24,-0.239 0,0.239 0,0.48 -0.24,0 0,0.241 0,0.24 0,0.48 -0.24,0.24 0.24,-0.24 0.24,-0.72 0.239,-0.48 0.48,-0.241 0.48,-0.72 0.241,0.24 0,-0.24 0.239,0.24 0.241,0.241 -0.241,-0.241 0.241,0 0.48,-0.24 -0.241,0 -0.48,0 0,-0.24 0.241,0 0.239,0 0,-0.48 0,-0.24 0.241,-0.24 0,-0.24 0.239,0 0.241,0 0.239,-0.24 0.241,0 0,0.24 0.239,-0.24 0.241,0 0,0.24 0.24,0 -0.24,0 0,-0.24 0.24,0 0,0.24 0,-0.24 0.24,0 0,0.24 0.24,0 -0.24,0 0.24,0 0,-0.24 0.24,0.24 0,0.24 0.24,-0.24 0,0.24 0.24,-0.24 0,0.24 0.24,0 0.24,0.24 -0.24,0 0.24,0 0,0.24 0.479,-0.24 0,0.24 0,-0.24 0,0.24 0.241,-0.24 0,0.48 0.239,-0.24 0,0.24 0.241,-0.24 0,0.24 0.239,0 0,0.24 0.241,-0.48 0,0.24 0.239,0.24 0.241,0 0,0.24 0,-0.24 0.239,0 -0.239,0.24 0,0.24 0.239,-0.24 0,-0.24 0.241,0 0,0.24 -0.241,0 0,0.24 0.241,0 -0.241,0.241 0.241,0.239 0.239,-0.239 -0.239,0 0,-0.241 0.239,-0.24 0,0.24 0.241,-0.24 0.239,0.24 0.241,-0.24 -0.241,0.481 0,-0.241 0.241,0.241 0,-0.241 0,0.241 0.239,0.239 -0.239,0 0.239,0 0,-0.239 0.241,0.239 -0.241,0.241 0.241,0 0.24,0 0,0.239 -0.24,0 0.24,0 -0.24,0.241 -0.241,0.24 0,0.24 0.241,-0.24 0.24,-0.24 0.24,0.48 -0.24,0 0,0.24 -0.481,0.24 0.241,0 0,0.24 0,0.239 -0.241,0.241 0,0.24 0.241,0 -0.48,0.24 0,0.24 0.239,0 -0.239,-0.24 0.48,0 0,-0.24 0.24,-0.24 0.24,-0.72 0,-0.24 0.48,-0.24 0.24,0 0,0.24 -0.24,0 0.24,0 -0.24,0.48 -0.241,0 -0.239,0.239 0.239,0 0,-0.239 0,0.239 0.241,-0.239 0.24,0 0,-0.24 0.24,0 0.24,-0.24 0.24,0.24 0,-0.24 0.24,0 0.239,0.24 0,-0.24 0,-0.24 0.241,0 0.96,0.24 0.719,0.48 0.241,0 0.239,0 0,0.239 0.241,0 0.48,0 -0.241,-0.239 0.48,0 0.48,0.48 0.241,0 0.239,0 0.241,0.24 0,-0.24 -0.241,0 0.481,-0.241 0.479,0 0,0.241 0.72,-0.241 1.201,0 0.239,0.241 0.241,0.24 0.48,0.24 0.239,0 0.721,0.48 0.48,0.48 0.48,0.24 0.719,0.48 0.721,0.72 0.24,0.24 0,0.24 0.48,0.24 0.48,0.24 0.239,0.24 0.48,0 0.241,0.241 0.48,0.24 0.239,0 0.721,0 0.239,-0.24 0.96,0.24 0.241,0 0.48,0.719 0,0.72 0.239,0.24 0,0.48 0.241,0.241 0.239,1.2 0,0.24 0.24,0.719 -0.24,0.481 0.24,0.24 -0.24,0 0,0.24 0,0.24 0,0.241 -0.239,0 0.239,0.239 -0.239,0.48 -0.241,1.201 -0.48,0.479 -0.239,0.24 -0.48,0.721 -0.241,0 0,-0.24 0,0.24 -0.239,0.239 0,-0.239 0,0.239 -0.241,0.481 -0.48,0.479 -0.239,0.481 -0.241,0 -0.719,0.48 -0.48,0.48 0,-0.24 0,-0.24 -0.241,0.24 0.241,0 0,0.24 -0.241,0.24 -0.239,0 0.239,0 0,0.239 0,0.241 -0.239,0.24 -0.241,0 0.241,-0.24 0,-0.241 -0.241,0.481 0,0.24 -0.239,0.479 -0.241,0.721 -0.72,0.72 -0.48,0.961 -0.48,0.239 -0.239,0 0.239,-0.239 -0.239,-0.24 -0.241,-0.241 -0.239,0.481 0,-0.24 -0.241,-0.241 0,0.241 0.241,0.24 0.239,0 -0.239,0.239 -0.241,0 0,0.24 0.241,0 -0.241,0.241 0,0.24 -0.239,0 0,0.479 0,-0.24 0,0.721 0,-0.241 -0.241,0 0.241,0.241 0,0.24 0,-0.24 0,0.24 0,0.24 0,0.239 0.239,-0.239 -0.239,-0.24 0.239,0 0,0.24 -0.239,0.96 0,1.2 0.239,0.959 0,0.482 0,0.479 -0.239,1.2 -0.241,0.96 0,0.96 0,0.241 0,0.24 -0.719,0.479 -0.241,0.481 -0.239,0.96 0,0.96 0,0.48 -0.241,0.481 -0.239,0.239 -0.241,0.48 -0.239,0 0,0.24 0,0.48 -0.241,-0.239 -0.239,0 0,0.239 0.239,0 0,0.24 -0.719,0.96 0,-0.239 -0.24,0.239 -0.241,0.48 -0.239,0.24 0,0.24 -0.24,0.241 0,0.24 0.24,0 0,0.96 -0.48,0.24 -0.96,0.24 -0.721,0.72 0,0.24 0.241,0 -0.241,0.24 0,0.24 -0.719,0 -1.44,0 0.239,-0.48 -0.239,-0.24 -0.48,0.24 0.239,0.24 0,0.24 -0.959,0.24 -0.72,0 0.48,0 0.24,-0.24 -0.48,-0.24 -0.24,0.24 -0.24,0 -0.241,0.24 0,-0.24 -0.239,0 -0.24,0 -0.481,0.24 0,0.24 0.241,0 0,0.239 0.24,0 -0.481,0 -0.239,0.242 -0.241,-0.242 0,0.242 -0.239,0 -0.241,0.239 -0.239,0 -0.241,0.24 0,0.24 -0.239,0.24 0,-0.24 -0.48,0 -0.721,0 0,0.24 -0.48,0.241 0,-0.241 -0.239,0 0.239,0.241 -0.239,0 -0.72,0.479 -0.48,0.24 -0.48,0.481 -0.48,0.239 -0.721,0.24 -0.239,0.48 -0.241,0 0.241,0 0,0.241 -0.241,0 -0.239,0.48 0,0.24 -0.241,-0.24 0.241,-0.241 -0.241,0 0,0.241 0,-0.241 -0.239,0 -0.241,0 0.241,0.241 -0.241,0.24 -0.239,-0.24 -0.241,0 0.241,0.24 -0.241,0 0.241,0 0.239,0 0.241,0 0,0.239 -0.48,0.481 -0.241,0 0.48,0 -0.239,0.719 -0.241,0 0,0.241 0.241,0.24 0,0.24 0,0.24 0,0.24 0.239,0 -0.239,0.24 0.239,0.24 -0.239,0.24 0.239,0 0,0.24 0,-0.24 -0.239,0.24 0.239,0.24 -0.239,0.24 0.239,0.24 -0.239,0.239 0.239,0.242 -0.239,0.239 0,0.24 -0.241,0.721 0,0.24 0,-0.24 -0.239,-0.241 0,0.481 0.239,0 -0.719,0.48 -0.72,0.48 -0.72,0.72 -0.48,0.72 -0.48,0.96 -0.24,0.959 -0.72,0.721 -0.72,0.96 -0.721,0.481 -0.96,0.719 -0.48,0.481 0,-0.24 0.241,-0.241 0,-0.24 -0.241,0 0,-0.239 0.241,0.239 0.239,0 0.241,0 -0.241,-0.239 0.48,0 0.48,-0.481 0.241,0 0.239,-0.24 0,-0.48 0,-0.24 0.48,0 0,0.24 0,-0.24 0,-0.24 0,-0.24 0.481,0 0,-0.239 0,-0.242 0,-0.479 0.24,0.24 0.24,-0.24 -0.24,-0.24 0,-0.24 -0.24,0.24 0.24,0 -0.24,0 -0.24,0.24 0,-0.24 -0.241,0.24 0,0.24 -0.239,-0.24 0.239,-0.24 -0.239,0 -0.241,-0.24 -0.239,-0.241 0,0.481 0.239,0.24 0.241,0 -0.241,0 -0.239,0.24 0,0.239 0,0.242 0,0.239 0,-0.239 0,-0.242 -0.241,0 0,0.242 0,0.239 -0.239,0.24 0,0.24 0.239,0 -0.239,0 -0.241,0.24 0,0.24 -0.48,0 -0.239,0.24 0,0.481 0,-0.241 -0.241,0 0,0.241 0.241,0 -0.241,0 -0.239,0.24 0,0.239 0.239,0 0,0.24 -0.239,0 0,0.241 0.239,-0.241 0,0.241 0,0.24 -0.479,0.239 -0.24,0.961 -0.48,0.72 -0.48,0.48 -0.96,0.72 -0.24,0 0,-0.24 0,-0.48 0,-0.48 0,-0.241 0.72,-0.72 0.24,0 -0.24,0 -0.24,-0.24 -0.24,0 -0.48,-0.48 -0.24,-0.479 -0.24,-0.241 -0.24,0 -0.24,-0.24 -0.72,-0.479 0,-0.241 -0.241,-0.24 -0.719,0 -0.241,-0.24 -0.239,0 -0.24,0 -0.48,-0.72 -0.24,-0.24 0,0.24 -0.24,0 -0.24,0.24 -0.48,0 0,-0.24 0.24,-0.24 -0.24,0 -0.24,-0.481 -0.24,-0.239 -0.72,-0.48 -0.24,-0.24 -0.48,0 -0.24,0 -0.241,0.24 -0.719,0 -0.241,-0.24 0.241,0 0.48,-0.241 0,-0.479 0.239,0 0.241,0 0,-0.24 0.72,-0.72 0.24,-0.24 0,-0.241 0.48,0 0,-0.239 0.24,-0.241 0,-0.239 0.48,-0.241 0,-0.239 0.24,-0.24 0.24,0 0.24,0 0,-0.241 -0.24,0 0.24,-0.24 0.48,-0.24 0.24,-0.24 0.24,-0.239 0.24,0 0.239,0 -0.239,0 0.239,0 0.241,-0.242 0.239,-0.479 0,0.24 0.48,-0.24 0.241,0 0,-0.24 0.239,0.24 0,-0.24 0,0.24 0.241,-0.24 0,-0.24 0.24,0 0.48,-0.24 0.24,-0.48 0,-0.24 0,-0.24 0,-0.72 0.24,-0.241 -0.48,-0.479 0,-0.24 0,-0.481 -0.24,0 -0.24,-0.239 0,0.239 0,-0.239 -0.24,0 0,0.239 -0.241,-0.239 -0.239,0.239 -0.241,0 -0.239,-0.479 0.48,-0.48 0,-0.241 0,-0.48 0.239,-0.479 0,-0.241 0,-0.24 0.241,0 -0.241,-0.24 0,-0.24 0.241,-0.239 -0.48,-0.241 -0.48,-0.24 -0.48,0.481 -0.72,0 -0.24,0 -0.24,-0.241 0,-0.48 0,-0.24 0,-0.239 -0.24,-0.242 0,-0.239 0,-0.48 0,-0.48 -0.24,-0.48 0,-0.241 -0.24,-0.239 -0.24,0 -0.48,0 -0.48,-0.24 0,-0.24 -0.24,0 -0.24,0.48 -0.24,0 -0.24,0 -0.24,0 -0.481,0 -0.239,-0.24 -0.48,0 -0.241,0 -0.48,0 -0.239,-0.24 0.239,-0.241 0,-0.24 0,-0.239 0,-0.48 0,-0.241 0,-0.24 0.241,0 0,-0.479 -0.241,-0.241 0,-0.239 0,-0.241 -0.239,0.241 0,-0.241 0,-0.48 -0.24,0 0,-0.24 0,-0.239 0.479,-0.481 -0.479,-0.48 0.72,-1.44 0.239,0 0,-0.24 -0.239,0 0.48,-1.44 0.24,0 -0.24,0 0,-0.24 -0.48,-0.96 -0.241,-0.241 0,-0.24 -0.719,0 -0.24,-0.239 -0.24,-0.721 0,-0.72 0.24,-0.24 0,-0.48 -0.24,0.24 -0.48,0 -1.44,-0.24 -1.68,0 0,-1.68 -0.721,-0.72 0.481,0 -0.24,-0.48 0.24,-0.48 0,-0.24 -0.24,-0.48 0,-0.241 0.24,-0.479 -0.24,-0.24 -0.72,-0.241 -0.48,-0.48 -0.24,0 -0.48,0 -0.24,0.24 -0.24,-0.24 -0.24,0 -0.24,0.24 0,-0.24 -0.48,-0.239 0,-0.481 -0.72,0 -0.24,-0.24 -0.24,0 -0.24,0 -0.48,-0.479 -0.24,-0.241 -0.24,0 -0.96,-0.48 -0.24,0 -0.24,0.24 -0.96,-0.24 -0.24,-0.24 0,-0.24 -0.48,0 0,-0.24 0,0.24 -0.24,-0.48 -0.24,0 0,-0.239 -0.24,-0.242 -0.24,0 0,-0.239 0,-0.24 -0.24,0 0,-0.24 0,-0.24 -0.24,0 0,-0.241 0.24,-0.479 0,-0.24 -0.24,0 0,-0.72 0,-0.24 0.24,0 0,-0.241 0,-0.479 0,-0.24 -0.24,-0.48 -0.24,0.48 -0.24,0 0,-0.241 -0.24,0 -0.48,0 -1.2,0.241 -0.48,0.24 -0.72,0.72 -0.24,0 -0.72,0.479 -0.24,0.241 -0.24,0 -0.24,0 -0.24,0 -0.48,0.48 -0.48,0.479 -0.48,0 0,-0.239 -0.24,0 -0.24,-0.24 -1.2,0 -0.72,0 -0.24,0 -0.48,0.24 -0.24,0 -0.24,-0.24 -0.24,0.24 0,-1.2 0,-1.2 0.24,-0.241 0,-0.239 -0.24,0 0.24,-0.24 0,-0.24 -0.24,0 -0.24,0.24 -0.24,0.479 -0.96,0.481 -0.48,0 -1.2,0 0,-0.24 0,-0.241 -0.24,0 0,-0.479 -0.48,0 -0.24,-0.24 -1.2,0 0.48,-0.481 0,-0.24 0,-0.239 -0.48,-0.481 m 47.04,-14.402 -0.24,0 0,-0.239 -0.48,-0.481 0,-0.72 0.24,0 0.24,0.24 0,-0.24 0.24,0 0,-0.24 -0.24,0.24 -0.24,0 -0.24,-0.24 0.24,-0.24 -0.24,-0.24 0.24,-0.48 0.24,0.24 0.24,0 -0.24,0 -0.24,-0.24 0.24,-0.48 0,-0.24 0.24,0 0.72,0 1.2,0.24 0.24,0 0.479,-0.24 0.48,0 1.201,0.24 0,0.24 0,0.24 -0.241,0.48 0,0.24 -0.239,0.24 0,0.24 -0.241,0.24 -0.239,0.48 -0.241,0.24 -0.48,0.241 -0.479,0 -0.24,-0.241 0,0.241 -0.24,0.239 -0.24,-0.239 0,0.239 -0.48,-0.239 -0.24,0.239 -0.48,0 0.24,0 -0.48,0 m 1.68,-3.36 -0.24,-0.24 0.48,-0.24 0.24,0 0.24,0.24 -0.24,0.24 -0.48,0 m -1.2,-0.96 -0.24,-0.24 0.24,-0.24 0.48,-0.24 0,0.24 -0.48,0.48 m -3.361,3.6 -0.239,0 0.239,-0.24 0,-0.24 0.48,-0.24 0,-0.48 0.241,-0.48 0.239,-0.24 0.48,0 0,0.24 -0.239,0.72 -0.721,0.72 -0.239,0.24 -0.241,0 m 0.96,-1.92 0,-0.24 0.241,0 0,-0.24 0.48,-0.24 0,0.24 -0.48,0.48 -0.241,0 m 1.201,-0.48 -0.241,0 -0.239,-0.24 0.239,-0.24 0.721,0 -0.48,0.48 m 1.68,-0.48 -0.72,-0.24 0,-0.24 1.44,-0.24 0,0.24 -0.24,0.24 -0.24,0.24 -0.24,0 m -0.96,-0.48 0.24,-0.48 -0.24,-0.24 0.24,-0.24 0,0.72 -0.24,0.24 m 4.079,58.088 0,-0.721 0.241,-0.24 0,0.24 -0.241,0.721 m -5.52,-55.688 0,-0.24 0.241,-0.24 0.48,-0.24 0,0.24 -0.241,0 -0.239,0.48 -0.241,0" /><polyline clip-path="url(#SVGID_4_-1)" stroke-miterlimit="3.85" points=" 452.418,305.569 452.418,304.849 452.178,304.369 452.178,303.889 452.178,303.169 452.178,302.689 451.938,302.449 451.698,302.208 451.698,301.969 451.698,301.729 451.938,301.729 452.418,301.969 452.418,302.208 452.657,302.208 452.897,302.208 453.378,302.208 453.378,301.969 453.617,301.489 453.617,301.249 453.857,301.249 453.857,301.489 454.098,301.489 454.098,301.249 454.338,301.249 454.577,301.009 454.818,301.249 454.577,301.729 454.577,301.969 454.818,301.969 454.818,301.729 454.577,301.969 454.577,302.208 454.818,302.449 455.298,302.449 455.538,302.449 455.538,302.929 455.538,303.169 455.298,303.169 455.058,303.169 455.058,303.409 454.577,303.649 454.577,304.129 454.338,304.129 454.338,304.369 454.098,304.609 453.857,305.089 453.617,305.329 453.378,305.329 453.378,305.569 453.138,305.569 452.897,305.569 452.418,305.569 " diff --git a/parsecalldata.pde b/parsecalldata.pde index 38bcd1e..ccedc4f 100644 --- a/parsecalldata.pde +++ b/parsecalldata.pde @@ -41,6 +41,11 @@ class country { if (searching==0) return np; else return new RPoint(0,0); } + RPoint getcentre() { + RPoint tl=outline.getTopLeft(); + RPoint br=outline.getBottomRight(); + return new RPoint((tl.x+br.x)/2,(tl.y+br.y)/2); + } } class weightedpixel { @@ -167,7 +172,7 @@ class calldata { for (int i=0; i < countries.size(); i++) { //if (DEBUG) countries.get(i).printOut(); - countries.get(i).analyse(18.279,746.302,109,374.293); //129.314 + //countries.get(i).analyse(18.279,746.302,109,374.293); //129.314 } } diff --git a/vodaviz.pde b/vodaviz.pde index d12db59..3f104a0 100644 --- a/vodaviz.pde +++ b/vodaviz.pde @@ -78,6 +78,17 @@ The intermediate latitude and longitude is then given by: drawing - circles (fixed diameter), closed shape made of 2 bezier curves +paths above 3d globe +fix missing countries +render above map +colours +sort lines according to destination ? + +match 3D map or render texture out of processing +or export 3d lines - dx + +cache points! + */ import processing.pdf.*; @@ -108,7 +119,7 @@ class pointTransform { RPoint form(RPoint in) { //transform - return new RPoint (((in.x*0.25)+(PI/2)),((in.y)*0.3)+(PI/2)); //front half of sphere + return new RPoint (((in.x*0.053)+(PI/2)-.01),((in.y)*0.14)+(PI/2)-.1); //front half of sphere } } @@ -120,9 +131,9 @@ class sphereMap { //map to 3D sphere float r=getHeight()*_r; - float x=r*cos(p.x)*(sin(p.y)) *2; - float z=r*sin(p.x)*(sin(p.y))-985; - float y=r*cos(p.y)+(getHeight()*0.5)-210; + float x=r*cos(p.x)*(sin(p.y)) *4; + float z=r*sin(p.x)*(sin(p.y)) -985; + float y=r*cos(p.y)+(getHeight()*1)-330; //camera at 0,0,0 //screen plane at 0,0,100 @@ -173,6 +184,7 @@ calldata calls; bitmapcountry Ireland; bezierstroke bstroke; +gradientstroke3D gstroke; PImage lightmap; color bg,fg; @@ -182,12 +194,12 @@ void setup(){ RG.init(this); //mode="PDF"; - if (mode=="PDF") size(832,220,PDF, "vodaviz_test_140212.pdf"); //P3D); //832,220); //nb pdf is 800x600 + if (mode=="PDF") size(832,220,PDF, "vodaviz_bg_160212.pdf"); //P3D); //832,220); //nb pdf is 800x600 else size(832,220); //,PDF, "testoutput.pdf"); //P3D); //832,220); //nb pdf is 800x600 // C. 33 - M. 3 - Y. 0 - K. 0 bg=color(164,215,244); - fg=color(255,255,255); + fg=color(#D2131D); smooth(); float m = millis(); @@ -198,7 +210,7 @@ void setup(){ ptrans = new pointTransform(); smap = new sphereMap(); - lightmap=loadImage("earth_lights.gif"); + lightmap=loadImage("vodaviz_bg_160212.png"); float startsize=0.2; float endsize=0.1; @@ -208,6 +220,13 @@ void setup(){ float bezierfract=0.25; bstroke = new bezierstroke(startsize,endsize,linewidth,mpfract,raisefract,bezierfract); + startsize=10; + endsize=.5; + float[] transpos={0.0,0.15,0.85,1.0}; + float[] transamt={0.5,0.2,0.2,0.5}; + color col=color(0,0,0); + gstroke=new gradientstroke3D(startsize,endsize,transpos,transamt,col,smap); + RG.ignoreStyles(); println("loaded svg in "+((millis()-m)*.001)+" seconds"); Ireland=new bitmapcountry("Ireland",0,0,shp.children[0]); @@ -218,7 +237,7 @@ void setup(){ background(255,255,255); noFill(); stroke(255); - strokeWeight(.02); + strokeWeight(.002); if (false) { //check worked example http://williams.best.vwh.net/avform.htm#Example RPoint LAX=new RPoint(2.066470,0.592539); @@ -238,35 +257,68 @@ int j=0; void draw() { noStroke(); + float hw=getWidth()/2; + float hh=getHeight()/2; if (i==0) { - //image(lightmap,0,0,getWidth(),getHeight()); - fill(bg); - rect(0,0,width,height); + image(lightmap,0,0,getWidth(),getHeight()); + //fill(bg); + //rect(0,0,width,height); + //background(0); + + if (false) { //render lightmap in 3D + float pw=0.5/lightmap.width; + float ph=0.5/lightmap.height; + for (int j=0;j<lightmap.width;j++) { + for (int k=0;k<lightmap.height;k++) { + fill(lightmap.get(j,k)); + float u=(((float)j)/lightmap.width)-0.5; + float v=(((float)k)/lightmap.height)-0.5; + RPoint p0=smap.per(ptrans.form(new RPoint((u-pw)*TWO_PI,(v+ph)*PI)),4); + RPoint p1=smap.per(ptrans.form(new RPoint((u+pw)*TWO_PI,(v+ph)*PI)),4); + RPoint p2=smap.per(ptrans.form(new RPoint((u-pw)*TWO_PI,(v-ph)*PI)),4); + RPoint p3=smap.per(ptrans.form(new RPoint((u+pw)*TWO_PI,(v-ph)*PI)),4); + quad(p0.x+hw,p0.y+hh,p1.x+hw,p1.y+hh,p3.x+hw,p3.y+hh,p2.x+hw,p2.y+hh); //clockwise + //quad(p0.x,p0.y,p1.x,p1.y,p3.x,p3.y,p2.x,p2.y); //clockwise + } + } + } } - fill(fg); + //fill(fg); //pick a random colour - //stroke(random(150)+10,random(150)+10,random(150)+10); + //fg=color(random(150)+10,random(150)+10,random(150)+10); + stroke(fg); //stroke(0,0,0,50); - if (false) //draw globe + if (true) //draw globe 1 country per frame { - if (true) { //draw countries - beginShape(); - for (int k=0;k<calls.getcountry(i).outline.paths[0].commands.length;k++) { - RPoint sp=calls.getcountry(i).outline.paths[0].commands[k].startPoint; - RPoint dp=smap.per(ptrans.form(pnorm.alise(sp)),4); - - vertex(dp.x+(getWidth()/2),dp.y+(getHeight()/2)); //,z); //z); - } - endShape(); - //println("drawing "+calls.getcountry(i).name+": "+calls.getcountry(i).outline.paths[0].commands.length+" points"); + if (false) { //draw countries + //noStroke(); + //fill(fg); + println("drawing "+calls.getcountry(i).name+": "+calls.getcountry(i).outline.paths.length+" paths"); + + for (int l=0;l<calls.getcountry(i).outline.paths.length;l++) { + beginShape(); + for (int k=0;k<calls.getcountry(i).outline.paths[l].commands.length;k++) { + RPoint sp=calls.getcountry(i).outline.paths[l].commands[k].startPoint; + RPoint dp=smap.per(ptrans.form(pnorm.alise(sp)),4); + + vertex(dp.x+(getWidth()/2),dp.y+(getHeight()/2)); //,z); //z); + } + endShape(); + } + } + if (true) { //draw centre lines from countries to ireland + RPoint Sp=ptrans.form(pnorm.alise(calls.countries.get(i).getcentre())); + RPoint Ep=ptrans.form(pnorm.alise(Ireland.getcentre())); + gstroke.drawstroke(Sp,Ep,fg); + } - if (true) { + if (false) { for (int j=0;j<calls.countries.get(i).calls*.001;j++) { RPoint s=calls.countries.get(i).getpoint(); RPoint e=Ireland.getpoint(); @@ -317,6 +369,12 @@ void draw() { } //println("plotting "+calls.countries.get(i).name+": "+calls.countries.get(i).calls+" calls"); } + if (false) { //fill country + for (int j=0;j<calls.countries.get(i).points.size();j++) { + RPoint Sp=calls.countries.get(i).points.get(j).pt; + ellipse(Sp.x,Sp.y,1,1); + } + } } @@ -326,6 +384,7 @@ void draw() { if (i==calls.countries.size()-1) { println("finished"); noLoop(); + //save("160212_filled.png"); if (mode=="PDF") exit(); } } |
