Advertisement
xeromino

animPoly

Nov 10th, 2014
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.92 KB | None | 0 0
  1. animatedPolygon ap1;
  2.  
  3. void setup() {
  4.   size(500,500);
  5.   ap1 = new animatedPolygon(4);
  6. }
  7.  
  8. void draw() {
  9.   background(255);
  10.   ap1.run();
  11. }
  12.  
  13. class animatedPolygon {
  14.  
  15.   PVector[] vertices;
  16.   //PVector[] vertices2;
  17.   PVector currPos;
  18.   int counter, currentVertex=0;
  19.   float currentPosBetweenVertices;
  20.   float angle, cx, cy, r;
  21.   float stepSize=.03;
  22.  
  23.  
  24.   animatedPolygon(int _v) {
  25.     vertices = new PVector[_v];
  26.   r = 200;
  27.     cx = width/2;
  28.     cy = height/2;
  29.     for (int i=0; i<vertices.length; i++) {
  30.       float x = cx + cos(angle)*r;
  31.       float y = cy + sin(angle)*r;
  32.       vertices[i] = new PVector(x, y);
  33.       angle += TWO_PI/_v;
  34.     }
  35.     //vertices2 = vertices.copy();
  36.   }
  37.  
  38.   void run() {
  39.     update();
  40.     display();
  41.   }
  42.  
  43.   void update() {
  44.     if (currentVertex==vertices.length-1) {
  45.       currPos = PVector.lerp(vertices[currentVertex], vertices[0], currentPosBetweenVertices);
  46.     } else {
  47.       currPos = PVector.lerp(vertices[currentVertex], vertices[currentVertex+1], currentPosBetweenVertices);
  48.     }
  49.  
  50.     if (currentPosBetweenVertices>1) {
  51.       currentPosBetweenVertices=0;
  52.       if (currentVertex==vertices.length-1) {
  53.         currentVertex=0;
  54.         counter++;
  55.       } else {
  56.         currentVertex++;
  57.       }
  58.     }
  59.     currentPosBetweenVertices += stepSize ;
  60.   }
  61.  
  62.   void display() {
  63.  
  64.     stroke(0);
  65.     for (int i=0; i<currentVertex; i++) {
  66.       line(vertices[i].x, vertices[i].y, vertices[i+1].x, vertices[i+1].y);
  67.     }
  68.     line(vertices[currentVertex].x, vertices[currentVertex].y, currPos.x, currPos.y);
  69.     /*
  70.     stroke(255);
  71.      for (int i=0; i<currentVertex; i++) {
  72.      line(vertices2[i].x, vertices2[i].y, vertices2[i+1].x, vertices2[i+1].y);
  73.      }
  74.      line(vertices2[currentVertex].x, vertices2[currentVertex].y, currPos.x, currPos.y);
  75.      */
  76.  
  77.     for (int i=0; i<vertices.length; i++) {
  78.       ellipse(vertices[i].x, vertices[i].y, 10, 10);
  79.     }
  80.   }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement