/** * Arm. * * The angle of each segment is controlled with the mouseX and * mouseY position. The transformations applied to the first segment * are also applied to the second segment because they are inside * the same pushMatrix() and popMatrix() group. */ float x, y; float angle1 = 0.0; float angle2 = 0.0; float segLength = 100; void setup() { size(640, 360); strokeWeight(30); stroke(255, 160); x = width * 0.3; y = height * 0.5; } void draw() { background(0); angle1 = (mouseX/float(width) - 0.5) * -PI; angle2 = (mouseY/float(height) - 0.5) * PI; pushMatrix(); segment(x, y, angle1); segment(segLength, 0, angle2); popMatrix(); } void segment(float x, float y, float a) { translate(x, y); rotate(a); line(0, 0, segLength, 0); }