-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path4-5-12-superfici.js
107 lines (77 loc) · 2.75 KB
/
4-5-12-superfici.js
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
var POLYPOINT = function(points){
var pp = SIMPLICIAL_COMPLEX(points)(
points.map(function(element,index,array){return [index];})
);
DRAW(pp);
return pp;
};
a CUBIC_HERMITE passo
prima disegno una curva, poi la generalizzo
arco di circonferenza:
passante per i punti (1,0) e (0,1)
con tangenti vettori in direz rispettivamente (0,1) e (-1,0)
var domain = INTERVALS(1)(20);
var controlpoints = [[1,0],[0,1],[0,1],[-1,0]]; // p0 p1 t0 t1
var curveMapping = CUBIC_HERMITE(S0)(controlpoints);
var c1 = MAP(curveMapping)(domain);
DRAW(c1);
// è troppo schiacciata -> aumento il modulo della tangente per renderlo più allargato
var domain = INTERVALS(1)(20);
var controlpoints = [[1,0],[0,1],[0,2],[-2,0]]; // p0 p1 t0 t1
var curveMapping = CUBIC_HERMITE(S0)(controlpoints);
var c12 = MAP(curveMapping)(domain);
DRAW(COLOR([1,0,0])(c12));
// il cerchio è piccolino -> aumento il diametro
// NB devo aumentare anche le tangenti! altrimenti si schiaccia
var domain = INTERVALS(1)(20);
var controlpoints = [[2,0],[0,2],[0,3],[-3,0]]; // p0 p1 t0 t1
var curveMapping = CUBIC_HERMITE(S0)(controlpoints);
var c2 = MAP(curveMapping)(domain);
DRAW(COLOR([0,1,0])(c2));
var draw = STRUCT([c1,c12]);
// ora disegno una superficie compresa tra c12 e c2
var domain2 = ([0,1],[0,1])([30,30])
var curves = [c12,c2]
var mapping = BEZIER(S1)(curves);
var s12 = MAP(mapping)(domain2);
DRAW(s12);
var s12 = BEZIER(S1)()
var surface1 MAP(s12)(domain)
var indxs = function(array){
return array.map(function(el,i,arr){return [i];});
}
var POLYPOINT = function(points){
var pp = SIMPLICIAL_COMPLEX(points)(indxs(points));
DRAW(pp);
return pp;
};
var domain = INTERVALS(1)(20);
var bezpoints = [[10,0,0],[0,5,0],[0,-3,0],[5,2,0],[10,0,0]];
var mapping = BEZIER(S0)(bezpoints);
var c = MAP(mapping)(domain);
DRAW(c);
DRAW(COLOR([0.7,0.7,0.7])(POLYLINE(bezpoints)));
var c0 = MAP(function(p){return[p[0],p[1],p[2]+10];})(c);
var c1 = MAP(function(p){return[p[0],p[1],p[2]+20];})(c);
var c2 = MAP(function(p){return[p[0],p[1],p[2]+30];})(c);
var c3 = MAP(function(p){return[p[0],p[1],p[2]+40];})(c);
DRAW (STRUCT([c0,c1,c2,c3]));
var domain2 = DOMAIN([[0,1],[0,1]])([30,50]);
var curves = STRUCT (CONS (AA (MAP) ([c0,c1,c2,c3])(domain2))));
DRAW(curves);
/*
// il cerchio è piccolino -> aumento il diametro
// NB devo aumentare anche le tangenti! altrimenti si schiaccia
var domain = INTERVALS(1)(20);
var controlpoints = [[2,0],[0,2],[0,3],[-3,0]]; // p0 p1 t0 t1
var curveMapping = CUBIC_HERMITE(S0)(controlpoints);
var c2 = MAP(curveMapping)(domain);
DRAW(COLOR([0,1,0])(c2));
var draw = STRUCT([c1,c12]);
// ora disegno una superficie compresa tra c12 e c2
var domain2 = ([0,1],[0,1])([30,30])
var curves = [c12,c2]
var mapping = BEZIER(S1)(curves);
var s12 = MAP(mapping)(domain2);
DRAW(s12);
*/