-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathretalho.inc
92 lines (71 loc) · 2.66 KB
/
retalho.inc
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
// Last edited on 2014-06-11 21:03:45 by stolfilocal
#macro retalho_barra(p,q,r,txg)
// Cria uma barra de {p} para {q} com raio {r}; omite se {p} muito perto de {q}.
#if ((r > 0) & (vlength(p - q) > 0.01*r))
cylinder{p,q,r texture{txg}}
#end
#end
#macro retalho (p,rad,txg,txr,xmin,ymin,xmax,ymax)
// Cria um retalho de Bezier com pontos de controle {p[0..3,0..3]}
// com textura {txr}..
// Se {rad} é positivo, também mostra a grade de pontos de controle,
// com barras de raio {rad} e textura {txg}.
union{
#local r = rad; // Raio das varetas.
#local R = 2*r; // Raio das bolas.
// O retalho propriamente dito:
bicubic_patch{
type 1 u_steps 3 v_steps 3
uv_vectors <xmin,ymin>, <xmax,ymin>, <xmax,ymax>, <xmin,ymax>
p[3][0],p[3][1],p[3][2],p[3][3],
p[2][0],p[2][1],p[2][2],p[2][3],
p[1][0],p[1][1],p[1][2],p[1][3],
p[0][0],p[0][1],p[0][2],p[0][3]
texture {txr}
}
#if (rad > 0)
// Bolas da grade de controle
sphere{p[0][0],R texture{txg}}
sphere{p[0][1],R texture{txg}}
sphere{p[0][2],R texture{txg}}
sphere{p[0][3],R texture{txg}}
sphere{p[1][0],R texture{txg}}
sphere{p[1][1],R texture{txg}}
sphere{p[1][2],R texture{txg}}
sphere{p[1][3],R texture{txg}}
sphere{p[2][0],R texture{txg}}
sphere{p[2][1],R texture{txg}}
sphere{p[2][2],R texture{txg}}
sphere{p[2][3],R texture{txg}}
sphere{p[3][0],R texture{txg}}
sphere{p[3][1],R texture{txg}}
sphere{p[3][2],R texture{txg}}
sphere{p[3][3],R texture{txg}}
// Barras da grade de controle
retalho_barra(p[0][0],p[0][1],r,txg)
retalho_barra(p[0][1],p[0][2],r,txg)
retalho_barra(p[0][2],p[0][3],r,txg)
retalho_barra(p[0][0],p[1][0],r,txg)
retalho_barra(p[0][1],p[1][1],r,txg)
retalho_barra(p[0][2],p[1][2],r,txg)
retalho_barra(p[0][3],p[1][3],r,txg)
retalho_barra(p[1][0],p[1][1],r,txg)
retalho_barra(p[1][1],p[1][2],r,txg)
retalho_barra(p[1][2],p[1][3],r,txg)
retalho_barra(p[1][0],p[2][0],r,txg)
retalho_barra(p[1][1],p[2][1],r,txg)
retalho_barra(p[1][2],p[2][2],r,txg)
retalho_barra(p[1][3],p[2][3],r,txg)
retalho_barra(p[2][0],p[2][1],r,txg)
retalho_barra(p[2][1],p[2][2],r,txg)
retalho_barra(p[2][2],p[2][3],r,txg)
retalho_barra(p[2][0],p[3][0],r,txg)
retalho_barra(p[2][1],p[3][1],r,txg)
retalho_barra(p[2][2],p[3][2],r,txg)
retalho_barra(p[2][3],p[3][3],r,txg)
retalho_barra(p[3][0],p[3][1],r,txg)
retalho_barra(p[3][1],p[3][2],r,txg)
retalho_barra(p[3][2],p[3][3],r,txg)
#end
}
#end