-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLinea.pde
123 lines (105 loc) · 2.5 KB
/
Linea.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
class Linea{
ArrayList puntos;
float grosor;
color c;
int ox, oy, nx, ny; // punto de origen en la grilla y el siguiente
boolean crece = true;
int tipo; // 1-arriba, 2-derecha, 3-abajo, 4-izquierda
int largo, maximo;
boolean mala = false;
int alfa;
Linea(){
puntos = new ArrayList();
c = randomColor();
Punto o = p[round(random(gridX-1))][round(random(gridY-1))];
if(!o.libre){
crece = false;
mala = true;
}
if(millis() % 3 == 0){
grosor = random(10, 20);
alfa = (int)random(5, 40);
}
else{
grosor = random(0.5, 2);
alfa = (int)random(100, 255);
}
puntos.add(o);
ox = nx = o.gx;
oy = ny = o.gy;
tipo = round(random(1,4));
maximo = round(random(20, (gridX + gridY)/1));
largo = 1;
verb = "Nueva linea tipo "+tipo+" en ("+ox+", "+oy+") con un largo máximo de "+maximo;
}
void dibuja(){
if(!mala){
if(crece){
switch(tipo){
case 1: // arriba
if(ny > 0 && largo < maximo){
ny--;
largo++;
}
else{
crece = false;
}
break;
case 2: // derecha
if(nx < gridX && largo <= maximo){
nx++;
largo++;
}
else{
crece = false;
}
break;
case 3: // abajo
if(ny < gridY && largo <= maximo){
ny++;
largo++;
}
else{
crece = false;
}
break;
case 4: // izquierda
if(nx > 0 && largo <= maximo){
nx--;
largo++;
}
else{
crece = false;
}
break;
}
nx = constrain(nx, 0, gridX-1);
ny = constrain(ny, 0, gridY-1);
if(!p[nx][ny].libre){
//p[nx][ny].cruce = true;
crece = false;
}
puntos.add(p[nx][ny]);
p[nx][ny].libre = false;
}
curveTightness(tension);
strokeWeight(grosor);
if(puntos.size() >= 2){
noFill();
stroke(c, alfa);
strokeWeight(grosor);
beginShape();
Punto pt;
pt = (Punto) puntos.get(0);
curveVertex(pt.xpos, pt.ypos);
for(int i = 0; i < puntos.size(); i++){
pt = (Punto) puntos.get(i);
curveVertex(pt.xpos, pt.ypos);
}
pt = (Punto) puntos.get(puntos.size()-1);
curveVertex(pt.xpos, pt.ypos);
endShape();
}
}
}
}