Example
// Learning Processing
// Daniel Shiffman
// http://www.learningprocessing.com

// Example 17-7: Boxes along a curve 

PFont f;

// The radius of a circle
float r = 100;

// The width and height of the boxes
float w = 40;
float h = 40;

void setup() {
  size(320,320);
  smooth();
}

void draw() {
  background(255);
  
  // Start in the center and draw the circle
  translate(width/2, height/2);
  noFill();
  stroke(0);
  // Our curve is a circle with radius r in the center of the window.
  ellipse(0, 0, r*2, r*2); 
  // 10 boxes along the curve
  int totalBoxes = 10;
  // We must keep track of our position along the curve
  float arclength = 0;
  // For every box
  for (int i = 0; i < totalBoxes; i ++ ) {
    // Each box is centered so we move half the width
    arclength += w/2; 
    
    // Angle in radians is the arclength divided by the radius
    float theta = arclength / r;
    
    pushMatrix();
    // Polar to cartesian coordinate conversion
    translate(r*cos(theta) , r*sin(theta));
    // Rotate the box
    rotate(theta);
    
    // Display the box
    fill(0, 100);
    rectMode(CENTER);
    rect(0, 0, w, h);
    popMatrix();
    
    // Move halfway again
    arclength += w/2;
  }
}


»

No comments yet.

Leave a comment