topical media & game development 
  
  
    
    
  
 graphic-processing-site-examples-Topics-Interaction-Follow3-Follow3.pde / pde
  
 Follow 3. 
 Based on code from Keith Peters (www.bit-101.com). 
 
 A segmented line follows the mouse. The relative angle from
 each segment to the next is calculated with atan2() and the
 position of the next is calculated with sin() and cos().
  
  
  float[] x = new float[20];
  float[] y = new float[20];
  float segLength = 9;
  
  void setup() {
    size(200, 200);
    smooth(); 
    strokeWeight(5);
    stroke(0, 100);
  }
  
  void draw() {
    background(226);
    dragSegment(0, mouseX, mouseY);
    for(int i=0; i<x.length-1; i++) {
      dragSegment(i+1, x[i], y[i]);
    }
  }
  
  void dragSegment(int i, float xin, float yin) {
    float dx = xin - x[i];
    float dy = yin - y[i];
    float angle = atan2(dy, dx);  
    x[i] = xin - cos(angle) * segLength;
    y[i] = yin - sin(angle) * segLength;
    segment(x[i], y[i], angle);
  }
  
  void segment(float x, float y, float a) {
    pushMatrix();
    translate(x, y);
    rotate(a);
    line(0, 0, segLength, 0);
    popMatrix();
  }
  
  
  
(C) Æliens 
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher. 
In case of other copyright issues, contact the author.