-
Notifications
You must be signed in to change notification settings - Fork 0
/
dancingCubes.asy
44 lines (37 loc) · 1.12 KB
/
dancingCubes.asy
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
import solids;
import animation2;
currentprojection=orthographic(.8,1.2,1);
animation a;
picture left;
left.size(200);
picture right;
right.size(200);
cube c = cube();
tetrahedron t = tetrahedron();
pen h = red+4bp;
pen b = black+4bp;
pen ed = deepred+2bp;
int frames = 20;
real stepleft = 120/(frames-1);
real stepright = 180/(frames-1);
for(int i = 0; i < frames; ++i){
transform3 tl = rotate(i*stepleft,(1,1,1));
transform3 tr = rotate(i*stepright,(0,0,1));
save();
draw(left,scale3(sqrt(3))*unitsphere,invisible);
draw(right,scale3(sqrt(3))*unitsphere,invisible);
draw(left,tl*c); draw(right, tr*c);
draw(left,tl*t,
vertexPens=array(t.S.vertices.length,h),
edgePens=array(t.S.edges.length,ed),
facePens=array(t.S.faces.length,deepred));
draw(right,tr*t,
vertexPens=array(t.S.vertices.length,h),
edgePens=array(t.S.edges.length,ed),
facePens=array(t.S.faces.length,deepred+opacity(0.5)));
add(left.fit(),(0,0),W);
add(right.fit(),(0,0),E);
a.add();
erase(left); erase(right); restore();
}
a.movie(enclosure=BBox(p=white,filltype=Fill),delay=50,firstDelay=400,lastDelay=750);