topical media & game development

talk show tell print

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.