mirror of
https://github.com/processing/processing4.git
synced 2026-01-30 03:41:15 +01:00
51 lines
876 B
Plaintext
51 lines
876 B
Plaintext
/**
|
|
* Reach 1
|
|
* based on code from Keith Peters.
|
|
*
|
|
* The arm follows the position of the mouse by
|
|
* calculating the angles with atan2().
|
|
*/
|
|
|
|
|
|
float segLength = 80;
|
|
float x, y, x2, y2;
|
|
|
|
void setup() {
|
|
size(640, 360);
|
|
strokeWeight(20.0);
|
|
stroke(255, 100);
|
|
|
|
x = width/2;
|
|
y = height/2;
|
|
x2 = x;
|
|
y2 = y;
|
|
}
|
|
|
|
void draw() {
|
|
background(0);
|
|
|
|
float dx = mouseX - x;
|
|
float dy = mouseY - y;
|
|
float angle1 = atan2(dy, dx);
|
|
|
|
float tx = mouseX - cos(angle1) * segLength;
|
|
float ty = mouseY - sin(angle1) * segLength;
|
|
dx = tx - x2;
|
|
dy = ty - y2;
|
|
float angle2 = atan2(dy, dx);
|
|
x = x2 + cos(angle2) * segLength;
|
|
y = y2 + sin(angle2) * segLength;
|
|
|
|
segment(x, y, angle1);
|
|
segment(x2, y2, angle2);
|
|
}
|
|
|
|
void segment(float x, float y, float a) {
|
|
pushMatrix();
|
|
translate(x, y);
|
|
rotate(a);
|
|
line(0, 0, segLength, 0);
|
|
popMatrix();
|
|
}
|
|
|