Difference between revisions of "User:Lerc/shapes"
From CodeStuff
(clea) |
|||
| Line 1: | Line 1: | ||
<edcode> | <edcode> | ||
| − | |||
var m; | var m; | ||
| + | var quarterTurn = Math.PI/2; | ||
| + | var base=65; | ||
| + | var height=100; | ||
| + | var age = 0.0; | ||
| + | var triangles =[ [ {x:0,y:0,dx:base,dy:height,angle:0}, | ||
| + | {x:0,y:0,dx:base,dy:height,angle:0}, | ||
| + | {x:0,y:0,dx:base,dy:height,angle:0}, | ||
| + | {x:0,y:0,dx:base,dy:height,angle:0} ], | ||
| + | |||
| + | [ {x:0,y:0,dx:base,dy:height,angle:quarterTurn*0}, | ||
| + | {x:0,y:0,dx:base,dy:height,angle:quarterTurn*1}, | ||
| + | {x:0,y:0,dx:base,dy:height,angle:quarterTurn*2}, | ||
| + | {x:0,y:0,dx:base,dy:height,angle:quarterTurn*3} ], | ||
| + | |||
| + | [ {x:0,y:0,dx:base,dy:height,angle:quarterTurn*0}, | ||
| + | {x:0,y:-(base+height),dx:base,dy:height,angle:quarterTurn*1}, | ||
| + | {x:0,y:-(base+height),dx:base,dy:height,angle:quarterTurn*2}, | ||
| + | {x:0,y:0,dx:base,dy:height,angle:quarterTurn*3} ], | ||
| + | |||
| + | [ {x:0,y:0,dx:base,dy:height,angle:quarterTurn*0}, | ||
| + | {x:0,y:-(base+height),dx:base,dy:height,angle:quarterTurn*1}, | ||
| + | {x:base+height,y:-(base+height),dx:base,dy:height,angle:quarterTurn*2}, | ||
| + | {x:base+height,y:0,dx:base,dy:height,angle:quarterTurn*3} ], | ||
| + | |||
| + | [ {x:0,y:0,dx:base,dy:height,angle:quarterTurn*0}, | ||
| + | {x:0,y:-(base+height),dx:base,dy:height,angle:quarterTurn*1}, | ||
| + | {x:base+height,y:-(base+height),dx:base,dy:height,angle:quarterTurn*2}, | ||
| + | {x:base+height,y:0,dx:base,dy:height,angle:quarterTurn*3} ] | ||
| + | |||
| + | ]; | ||
| + | |||
function move() { | function move() { | ||
m=getMousePosition() | m=getMousePosition() | ||
| − | + | age+=0.01; | |
} | } | ||
| − | function | + | function drawTriangle(originX,originY,dx,dy,angle) { |
| − | + | dy=-dy; | |
| − | + | canvasSave(); | |
| − | + | canvasTranslate(originX,originY); | |
| − | + | canvasRotate(angle); | |
| − | + | ||
| + | fillPolygon(0,0,dx,0,0,dy); | ||
| + | setColour("black"); | ||
| + | drawPolygon(0,0,dx,0,0,dy); | ||
| + | canvasRestore(); | ||
| + | } | ||
| + | |||
| + | |||
| + | function draw() { | ||
| + | clear(); | ||
| + | canvasTranslate(320,200); | ||
| + | |||
| + | setColour("rgba(255,255,0,0.5)"); | ||
| − | + | var pongage = age%8; | |
| − | + | if (pongage > 4) pongage=8-pongage; | |
| − | + | var a=Math.floor(pongage); | |
| − | var | + | var frac=pongage-a; |
| + | |||
| + | var move = (frac<0.1) ? 0 : (frac-0.1)*1.11 ; | ||
| + | var b=a+1; | ||
| + | if (b>=triangles.length) b=triangles.length-1; | ||
| + | |||
| + | function lerp(a,b) { | ||
| + | return a*(1-move) + b* move; | ||
| + | } | ||
| + | |||
| + | var now = triangles[a]; | ||
| + | var next = triangles[b]; | ||
| − | + | for (var i in now) { | |
| − | + | var ta=now[i]; | |
| + | var tb=next[i]; | ||
| + | |||
| + | drawTriangle(lerp(ta.x,tb.x) ,lerp(ta.y,tb.y) ,lerp(ta.dx,tb.dx) ,lerp(ta.dy,tb.dy) ,lerp(ta.angle,tb.angle)); | ||
| + | } | ||
| + | if (pongage>3) { | ||
| + | setColour("rgba(0,200,180,"+frac+")"); | ||
| + | fillPolygon(base,0,0,-height,height,-(base+height),base+height,-(base)); | ||
| + | setColour("Black"); | ||
| + | drawPolygon(base,0,0,-height,height,-(base+height),base+height,-(base)); | ||
| + | } | ||
| − | + | /* | |
| − | + | drawTriangle(0,0,base,height,0); | |
| − | + | drawTriangle(0,0,base,height,quarterTurn); | |
| − | + | drawTriangle(0,0,base,height,quarterTurn*2); | |
| − | + | drawTriangle(0,0,base,height,quarterTurn*3); | |
| − | + | ||
| − | + | drawTriangle(0,0,base,height,0); | |
| − | + | setColour("orange"); | |
| − | + | drawTriangle(0,-(base+height),base,height,quarterTurn); | |
| − | + | setColour("blue"); | |
| − | + | drawTriangle(base+height,-(base+height),base,height,quarterTurn*2); | |
| − | + | setColour("green"); | |
| − | + | drawTriangle(base+height,0,base,height,quarterTurn*3); | |
| + | */ | ||
| + | setColour("black"); | ||
| + | //print(frac,10,10); | ||
} | } | ||
run(move,draw); | run(move,draw); | ||
| − | |||
</edcode> | </edcode> | ||