Difference between revisions of "User:Lerc/shapes"

From CodeStuff
Jump to: navigation, search
(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 drawParallelogram(x,y,tilt) {
+
function drawTriangle(originX,originY,dx,dy,angle) {
+
   dy=-dy;
   var width =200;
+
   canvasSave();
   var height = 150;
+
   canvasTranslate(originX,originY);
   var halfWidth = width/2;
+
   canvasRotate(angle);
   var halfHeight = height/2;
+
 
 +
  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 bottom= y+halfHeight;
+
  var pongage = age%8;
  var top=bottom-height;
+
  if (pongage > 4) pongage=8-pongage;
 
    
 
    
  var bottomLeft = x-halfWidth;
+
  var a=Math.floor(pongage);
   var bottomRight = bottomLeft + width;
+
  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];
 
    
 
    
  var topLeft = bottomLeft+tilt;
+
  for (var i in now) {
  var topRight = topLeft+width;
+
    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));
 +
  }
 
    
 
    
   drawLine(bottomLeft,bottom,bottomRight,bottom);
+
   /*
  drawLine(topLeft,top,topRight,top);
+
  drawTriangle(0,0,base,height,0);
 
+
  drawTriangle(0,0,base,height,quarterTurn);
  drawLine(bottomLeft,bottom,topLeft,top);
+
  drawTriangle(0,0,base,height,quarterTurn*2);
  drawLine(bottomRight,bottom,topRight,top);
+
  drawTriangle(0,0,base,height,quarterTurn*3);
   
+
 
}
+
  drawTriangle(0,0,base,height,0);
function draw() {
+
  setColour("orange");
   clear();
+
  drawTriangle(0,-(base+height),base,height,quarterTurn);
 
+
  setColour("blue");
   drawParallelogram(300,250,m.x-300);
+
   drawTriangle(base+height,-(base+height),base,height,quarterTurn*2);
 
+
  setColour("green");
   print(JSON.stringify(m),30,200);
+
   drawTriangle(base+height,0,base,height,quarterTurn*3);
 +
*/
 +
   setColour("black");
 +
  //print(frac,10,10);
 
}
 
}
  
 
run(move,draw);
 
run(move,draw);
 
 
</edcode>
 
</edcode>

Revision as of 11:09, 17 March 2012