HTMLcopy
1
<div id="container"></div>
CSScopy
6
1
html, body, #container {
2
width: 100%;
3
height: 100%;
4
margin: 0;
5
padding: 0;
6
}
JavaScriptcopy
x
1
// create a stage
2
var stage = acgraph.create("container");
3
4
// scale the whole stage
5
stage.scale(0.7, 0.7, 0, 0);
6
7
// create layers
8
var layer_cube = stage.layer(); // cube layer
9
var layer_cylinder = stage.layer(); // cylinder layer
10
var layer_prism = stage.layer(); // hexagonal prism layer
11
var layer_main_shadow = stage.layer(); // shadow layer
12
var layer_5 = stage.layer();
13
14
// creating the cube
15
16
// create abstract rects and fills
17
var rect = acgraph.math.Rect(50, 250, 100, 200);
18
var fill = {keys:["#666","#888", "#ccc"], angle:135, mode:rect};
19
var rect_2 = acgraph.math.Rect(50, 200, 200, 100);
20
var fill_2 = {keys:["#666","#666", "#ccc"], angle:185, mode:rect_2};
21
22
// draw cube sides
23
var cube_top = layer_cube.path().moveTo(200, 200)
24
.lineTo(300, 250)
25
.lineTo(150, 300)
26
.lineTo(50, 250)
27
.close()
28
.fill(["#888", "#f0f0f0", "#f0f0f0"],150)
29
.stroke(fill_2,1);
30
31
var cube_side = layer_cube.path().moveTo(50, 250)
32
.lineTo(150, 300)
33
.lineTo(150, 450)
34
.lineTo(50, 400)
35
.close()
36
.fill(["#999","#f0f0f0", "white"], 135)
37
.stroke(fill,1);
38
39
var cube_back = layer_cube.path().moveTo(150, 300)
40
.lineTo(300, 250)
41
.lineTo(300, 400)
42
.lineTo(150, 450)
43
.close()
44
.fill("#aaa")
45
.stroke("1px #666");
46
47
layer_cube.zIndex(1);
48
49
// the shadow on a separate layer
50
var cube_shadow_prism = layer_5.path().moveTo(231, 365)
51
.lineTo(360, 315)
52
.lineTo(390, 325)
53
.lineTo(310, 355)
54
.lineTo(258, 375)
55
.close()
56
.moveTo(230,365)
57
.lineTo(200,400)
58
.lineTo(215,460)
59
.lineTo(255,480)
60
.lineTo(255,375)
61
.close()
62
.fill("#888")
63
.stroke("none");
64
65
var prism_shadow = layer_5.path().moveTo(445,415)
66
.lineTo(850,550)
67
.lineTo(410,550)
68
.lineTo(265,485)
69
.close()
70
.fill(["#aaa","#ccc 0.5","white 0"],-90)
71
.stroke(null);
72
73
layer_5.zIndex(5);
74
75
76
// creating a cylinder
77
var ellipse_top = layer_cylinder.ellipse(50,50,150,30)
78
.fill(["#f0f0f0", "#f0f0f0", "#aaa"],-30)
79
.zIndex(3);
80
81
var ellipse_body = layer_cylinder.path().moveTo(-100, 50)
82
.lineTo(-100, 350)
83
.arcTo(150, 30, 180, -180)
84
.lineTo(200, 50)
85
.arcTo(-150, 30, 180, 180)
86
.close()
87
.fill(["white", "#aaa", "#888"],-40)
88
.stroke("1px black")
89
.zIndex(2);
90
91
var ellipse_shadow_cube = layer_cylinder.path().moveTo(-45,375)
92
.lineTo(110,405)
93
.lineTo(315,373)
94
.lineTo(200,350)
95
.close()
96
.stroke(null)
97
.fill("#848484");
98
99
100
var ellipse_shadow_prism_top = layer_cylinder.path().moveTo(520,485)
101
.lineTo(680,517)
102
.lineTo(465,558)
103
.lineTo(300,523)
104
.fill("#888")
105
.stroke(null)
106
.close();
107
108
var ellipse_shadow_prism_middle = layer_cylinder.path().moveTo(680,520)
109
.lineTo(750,592)
110
.lineTo(515,640)
111
.lineTo(465,560)
112
.fill("#898989")
113
.stroke(null)
114
.close();
115
116
// moving the cylinder
117
layer_cylinder.translate(650,50);
118
119
// scaling the cylinder
120
layer_cylinder.scale(0.3, 0.6, 0, 0);
121
122
layer_cylinder.zIndex(3);
123
124
125
// creating a prism
126
127
var prism_hex_edge = layer_prism.path().moveTo(200,400)
128
.lineTo(215,460)
129
.lineTo(265,485)
130
.lineTo(300,435)
131
.lineTo(285,385)
132
.lineTo(230,365)
133
.close()
134
.stroke("1px #444")
135
.fill("#aaa");
136
137
var prism_top_edge = layer_prism.path().moveTo(230,365)
138
.lineTo(400,300)
139
.lineTo(455,320)
140
.lineTo(285,385)
141
.stroke("1px #666")
142
.fill("#aaa")
143
.close();
144
145
var prism_middle_edge = layer_prism.path().moveTo(285,385)
146
.lineTo(300,435)
147
.lineTo(470,365)
148
.stroke("1px #666")
149
.lineTo(455,320)
150
.close()
151
.fill("#929292");
152
153
var prism_bottom_edge = layer_prism.path().moveTo(300,435)
154
.lineTo(470,365)
155
.lineTo(445,415)
156
.lineTo(265,485)
157
.stroke("1px #777")
158
.close()
159
.fill("#848484");
160
161
layer_prism.zIndex(1);
162
163
164
// creating the big shadow under everything
165
layer_main_shadow.path().moveTo(50,400)
166
.lineTo(445,415)
167
.lineTo(850,550)
168
.lineTo(350,550)
169
.close()
170
.stroke(null)
171
.fill(["#aaa","white"],270);