diff options
Diffstat (limited to 'bezierstroke.pde')
| -rw-r--r-- | bezierstroke.pde | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/bezierstroke.pde b/bezierstroke.pde new file mode 100644 index 0000000..2cb85de --- /dev/null +++ b/bezierstroke.pde @@ -0,0 +1,28 @@ +import geomerative.*; + +class bezierstroke { + float startsize,endsize,linewidth,mpfract,raisefract,bezierfract; + bezierstroke(float _s,float _e,float _l,float _m,float _r,float _b){ + startsize=_s; + endsize=_e; + linewidth=_l; + mpfract=_m; + raisefract=_r; + bezierfract=_b; + } + void drawstroke(RPoint start,RPoint end) { + ellipse(start.x,start.y,startsize,startsize); + ellipse(end.x,end.y,endsize,endsize); + RPoint mp=new RPoint(start.x+((end.x-start.x)*mpfract),(start.y+((end.y-start.y)*mpfract))-((getHeight()-(start.y+((end.y-start.y)*mpfract)))*raisefract)); + RPoint bv=new RPoint((end.x-start.x)*bezierfract,(end.y-start.y)*bezierfract); + RPoint b1=new RPoint(mp.x-bv.x,mp.y-bv.y); + RPoint b2=new RPoint(mp.x+bv.x,mp.y+bv.y); + beginShape(); + vertex(start.x,start.y); + bezierVertex(start.x,start.y,b1.x,b1.y-(linewidth/2),mp.x,mp.y-(linewidth/2)); + bezierVertex(b2.x,b2.y-(linewidth/2),end.x,end.y,end.x,end.y); + bezierVertex(end.x,end.y,b2.x,b2.y+(linewidth/2),mp.x,mp.y+(linewidth/2)); + bezierVertex(b1.x,b1.y+(linewidth/2),start.x,start.y,start.x,start.y); + endShape(); + } +} |
