-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rope.pde
64 lines (51 loc) · 1.31 KB
/
Rope.pde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Simulation of elastic rope / hair
// Author: Ximo Casanova
int Nrope = 100; // Number of ropes
final int Nsprings = 10; // Number of spring
int Lrope = 150; // Length of the strings
float Lspring = Lrope/Nsprings; // Length of spring
float [] vE = new float [700];
int t = 0;
Hair hair;
Hair[] hairs = new Hair[Nrope];
void setup()
{
size (700, 800);
for (int np = 0; np < Nrope; np++)
{
PVector ini = new PVector (width * 0.3 + random(100), height * 0.3 + random(100)); //Se inicializarán en posiciones random
hair = new Hair (Lrope, Nsprings, ini);
hairs[np] = hair;
}
}
void draw()
{
background(255);
float Etotal = 0;
fill(255,0,0);
for (int np =0; np < Nrope; np++)
hairs[np].update();
}
//interfaz de usuario --> se modelará mediante una función que detecta cuándo se ha seleccionado (o soltado) un pelo y se está arrastrando
void mousePressed()
{
for (int np = 0; np < Nrope; np++)
hairs[np].on_click();
}
void mouseReleased()
{
for(int np = 0;np<Nrope;np++)
hairs[np].release();
}
void plot_func(int time, int x1, int y1, int x2, int y2)
{
stroke(200, 10, 0);
strokeWeight(3);
fill(153);
rect(x1, y1, x2, y2);
stroke(200, 210, 0);
strokeWeight(1);
stroke(255);
for (int i = 0; i<time; i++)
point(i, 600*0.5 - (vE[i] /6.5e5)*600);
}