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
110
111
112
113
114
115
|
% stageforthree.mp
% L. Nobre G.
% 2003
%input featpost3Dplus2D;
Spread := 35;
f := (13,7,3.5);
beginfig(1);
numeric i, len, wang, reflen, frac, coordg;
numeric fws, NumLines, inray, outay;
path conepath, cira, cirb, ella, ellb, tuba, tubb, tubc;
color axe, aroc, cubevertex, conecenter, conevertex;
color allellaxe, ellaaxe, ellbaxe, pca, pea, pcb, peb;
frac := 0.5;
len := 0.6;
wang := 60;
axe := (0,cosd(90-wang),sind(90-wang));
fws := 4;
reflen := 0.2*fws;
outay := 0.45*fws;
inray := 0.7*outay;
coordg := frac*fws;
NumLines := 30;
HoriZon := -0.5*fws;
setthestage( 0.5*NumLines, 2*fws );
cubevertex = (0.12*fws,-0.5*fws,-0.5*fws);
kindofcube(false,true,cubevertex,180,0,0,0.65*fws,0.2*fws,fws);
aroc := outay*(0,cosd(wang),sind(wang))-0.5*(0,fws,fws);
rigorousdisc( inray, true, aroc, outay, axe*len );
allellaxe := reflen*( 0.707, 0.707, 0 );
ellaaxe := reflen*( 0.707, -0.707, 1.0 );
ellbaxe := reflen*( -0.707, 0.707, 1.0 );
conecenter = ( coordg, coordg, -0.5*fws );
pca := ( coordg, -coordg, -0.5*fws );
pcb := ( -coordg, coordg, -0.5*fws );
pea := ( coordg, -coordg, 0.9*fws );
peb := ( -coordg, coordg, 0.9*fws );
cira := goodcirclepath( pca, blue, reflen );
cirb := goodcirclepath( pcb, blue, reflen );
ella := ellipticpath( pea, allellaxe, ellaaxe );
ellb := ellipticpath( peb, allellaxe, ellbaxe );
tuba := twocyclestogether( cira, ella );
tubb := twocyclestogether( cirb, ellb );
tubc := twocyclestogether( ella, ellb );
unfill tubb; draw tubb;
unfill tubc; draw tubc;
unfill tuba; draw tuba;
conevertex = conecenter + ( -3.5*reflen, 0, 0.8*fws );
verygoodcone(false,conecenter,blue,reflen,conevertex);
endfig;
Spread := 23;
f := (6,13,3);
ShadowOn := true;
beginfig(2);
numeric reflen, frac, coordg;
numeric fws, NumLines;
path ella, ellb;
color axe, cubevertex;
color allellaxe, ellaaxe, pca, pcb;
frac := 0.5;
wang := 60;
axe := (0,cosd(90-wang),sind(90-wang));
fws := 4;
reflen := 0.35*fws;
coordg := frac*fws;
NumLines := 52;
HoriZon := -0.5*fws;
setthestage( 0.5*NumLines, 3.6*fws );
cubevertex = (0.3*fws,-0.5*fws,-0.5*fws);
kindofcube(false,true,cubevertex,180,0,0,0.6*fws,0.2*fws,fws);
allellaxe := reflen*( 0.707, 0.707, 0 );
ellaaxe := reflen*( 0.5, -0.5, 0 );
pca := ( coordg, coordg, -0.5*fws );
pcb := ( -coordg, coordg, -0.5*fws );
whatisthis( pca, 0.5*ellaaxe, allellaxe, reflen, 0.3 );
whatisthis( pcb, ellaaxe*sqrt(2), allellaxe/sqrt(2), 2*reflen, 0.6 );
endfig;
Spread := 23;
f := (13,6,4.5);
ShadowOn := true;
LightSource := 10*(4,-3,6);
beginfig(3);
numeric reflen, frac, coordg;
numeric fws, NumLines;
path ella, ellb;
color axe, cubevertex, conecenter, conevertex;
color allellaxe, ellaaxe, pca, pcb;
frac := 0.5;
wang := 60;
axe := (0,cosd(90-wang),sind(90-wang));
fws := 4;
reflen := 0.35*fws;
coordg := frac*fws;
NumLines := 45;
HoriZon := -0.5*fws;
setthestage( 0.5*NumLines, 3.3*fws );
cubevertex = (0.3*fws,-0.5*fws,0);
tropicalglobe( 7, cubevertex, 0.5*fws, axe );
allellaxe := reflen*( 0.707, 0.707, 0 );
ellaaxe := reflen*( 0.5, -0.5, 0 );
pcb := ( -coordg, coordg, 0 );
rigorousdisc( 0, true, pcb, 0.5*fws, -ellaaxe );
conecenter = ( coordg, coordg, -0.5*fws );
conevertex = conecenter + ( 0, 0, 0.9*fws );
verygoodcone(false,conecenter,blue,reflen,conevertex);
endfig;
end.
|