Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float a1 = PI/4; // Initial angle of line 1 with respect to point 0
- float a2 = PI/8; // Initial angle of line 2 with respect to line 1
- int l1 = 200;
- int l2 = 200;
- int m1 = 40;
- int m2 = 40;
- float g = 1;
- float a1_v = 0;
- float a2_v = 0;
- float a1_a = 0;
- float a2_a = 0;
- float resistance = 1;
- float x0;
- float y0;
- float x1;
- float y1;
- float x2;
- float y2;
- float prevx, prevy;
- PGraphics canvas;
- void setup() {
- size(1000,1000);
- x0 = width/2;
- y0 = height/2;
- x1 = x0 + sin(a1) * l1;
- y1 = y0 + cos(a1) * l1;
- x2 = x1 + sin(a1 + a2) * l2;
- y2 = y1 + cos(a1 + a2) * l2;
- prevx = x2;
- prevy = y2;
- canvas = createGraphics(width, height);
- canvas.beginDraw();
- canvas.background(255,191,0);
- canvas.endDraw();
- }
- void draw(){
- background(235,140,0);
- imageMode(CORNER);
- image(canvas, 0, 0, width, height);
- float num1 = -g * (2 * m1 + m2) * sin(a1);
- float num2 = -m2 * g * sin(a1-2*a2);
- float num3 = -2*sin(a1-a2)*m2;
- float num4 = a2_v*a2_v*l2+a1_v*a1_v*l1*cos(a1-a2);
- float den = l1 * (2*m1+m2-m2*cos(2*a1-2*a2));
- a1_a = (num1 + num2 + num3*num4) / den;
- num1 = 2 * sin(a1-a2);
- num2 = (a1_v*a1_v*l1*(m1+m2));
- num3 = g * (m1 + m2) * cos(a1);
- num4 = a2_v*a2_v*l2*m2*cos(a1-a2);
- den = l2 * (2*m1+m2-m2*cos(2*a1-2*a2));
- a2_a = (num1*(num2+num3+num4)) / den;
- a1_v += a1_a;
- a2_v += a2_a;
- a1 += a1_v;
- a2 += a2_v;
- a1_v *= resistance;
- a2_v *= resistance;
- a1 = a1 % 360;
- a2 = a2 % 360;
- x1 = x0 + sin(a1) * l1;
- y1 = y0 + cos(a1) * l1;
- x2 = x1 + sin(a1 + a2) * l2;
- y2 = y1 + cos(a1 + a2) * l2;
- canvas.beginDraw();
- canvas.stroke(220,105,0);
- if (frameCount > 1) {
- canvas.line(prevx, prevy, x2, y2);
- }
- canvas.endDraw();
- stroke(96,35,32);
- line(x0,y0,x1,y1);
- line(x1,y1,x2,y2);
- stroke(0);
- fill(224,48,30);
- ellipse(x1, y1, m1, m1);
- ellipse(x2, y2, m2, m2);
- prevx = x2;
- prevy = y2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement