sgl 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. data/ChangeLog +254 -234
  2. data/History.txt +6 -0
  3. data/Manifest.txt +10 -0
  4. data/Rakefile +27 -7
  5. data/examples/cocoa1-basic.rb +14 -14
  6. data/examples/cocoa10-transparent.rb +26 -26
  7. data/examples/cocoa11-application.rb +13 -13
  8. data/examples/cocoa2-draw.rb +23 -23
  9. data/examples/cocoa3-affine.rb +29 -29
  10. data/examples/cocoa4-font.rb +24 -24
  11. data/examples/cocoa5-image.rb +22 -22
  12. data/examples/cocoa6-sound.rb +24 -24
  13. data/examples/cocoa7-movie.rb +40 -40
  14. data/examples/cocoa8-movieoverlay.rb +42 -42
  15. data/examples/cocoa9-streaming.rb +40 -40
  16. data/examples/opengl1-basic.rb +14 -14
  17. data/examples/opengl11-application.rb +13 -13
  18. data/examples/opengl2-draw.rb +23 -23
  19. data/examples/opengl3-affine.rb +29 -29
  20. data/examples/sample1.rb +11 -11
  21. data/examples/sample10.rb +16 -16
  22. data/examples/sample11.rb +22 -22
  23. data/examples/sample11a.rb +33 -33
  24. data/examples/sample12.rb +30 -30
  25. data/examples/sample12a.rb +35 -35
  26. data/examples/sample13.rb +116 -116
  27. data/examples/sample15.rb +24 -24
  28. data/examples/sample16.rb +31 -31
  29. data/examples/sample16a.rb +35 -35
  30. data/examples/sample6.rb +18 -18
  31. data/examples/sample7.rb +16 -16
  32. data/examples/sample9.rb +20 -20
  33. data/examples/testgl.rb +169 -169
  34. data/lib/sgl/bass.rb +46 -46
  35. data/lib/sgl/cocoa-app.rb +43 -43
  36. data/lib/sgl/cocoa-color.rb +65 -65
  37. data/lib/sgl/cocoa-draw.rb +72 -72
  38. data/lib/sgl/cocoa-event.rb +229 -229
  39. data/lib/sgl/cocoa-media.rb +144 -144
  40. data/lib/sgl/cocoa-notuse.rb +493 -493
  41. data/lib/sgl/cocoa-window.rb +203 -203
  42. data/lib/sgl/cocoa.rb +8 -8
  43. data/lib/sgl/opengl-app.rb +38 -38
  44. data/lib/sgl/opengl-color.rb +44 -44
  45. data/lib/sgl/opengl-draw.rb +260 -260
  46. data/lib/sgl/opengl-event.rb +325 -325
  47. data/lib/sgl/opengl-modules.rb +22 -22
  48. data/lib/sgl/opengl-window.rb +224 -224
  49. data/lib/sgl/opengl.rb +7 -7
  50. data/lib/sgl/sgl-button.rb +135 -135
  51. data/lib/sgl/sgl-client.rb +21 -21
  52. data/lib/sgl/sgl-color.rb +68 -82
  53. data/lib/sgl/sgl-connect.rb +9 -9
  54. data/lib/sgl/sgl-server.rb +58 -58
  55. data/lib/sgl/sgl-spring.rb +216 -216
  56. data/lib/sgl/version.rb +2 -2
  57. data/scripts/lib-txt2html.rb +130 -0
  58. data/scripts/txt2html +2 -63
  59. data/spec/sgl_spec.rb +13 -0
  60. data/spec/spec.opts +1 -0
  61. data/spec/spec_helper.rb +1 -0
  62. data/test/test_cocoa_app.rb +291 -291
  63. data/test/test_module_ruby16.rb +30 -30
  64. data/test/test_opengl_app.rb +147 -147
  65. data/test/test_opengl_basic.rb +22 -22
  66. data/test/test_opengl_fullscreen.rb +23 -23
  67. data/test/test_opengl_novice.rb +35 -35
  68. data/website/challenge1.html +91 -91
  69. data/website/challenge1.txt +3 -3
  70. data/website/challenge2.html +143 -144
  71. data/website/challenge2.txt +13 -14
  72. data/website/challenge3.html +66 -63
  73. data/website/challenge3.txt +7 -7
  74. data/website/cocoa.html +85 -88
  75. data/website/cocoa.txt +2 -4
  76. data/website/description.html +138 -138
  77. data/website/description.txt +1 -1
  78. data/website/exercise1.html +262 -264
  79. data/website/exercise1.txt +58 -53
  80. data/website/exercise2.html +241 -683
  81. data/website/exercise2.txt +11 -427
  82. data/website/exercise3.html +206 -0
  83. data/website/exercise3.txt +155 -0
  84. data/website/exercise4.html +198 -0
  85. data/website/exercise4.txt +151 -0
  86. data/website/exercise5.html +162 -0
  87. data/website/exercise5.txt +113 -0
  88. data/website/exhibition.html +84 -84
  89. data/website/howto.html +146 -134
  90. data/website/howto.txt +9 -0
  91. data/website/index.html +178 -178
  92. data/website/index.txt +20 -19
  93. data/website/sound.html +141 -141
  94. metadata +16 -3
@@ -1,44 +1,44 @@
1
- # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
2
- # License: Ruby License
3
-
4
- module SGL
5
- def background(*a) $__a__.background(*a) end
6
- def backgroundHSV(*a) $__a__.backgroundHSV(*a) end
7
- def color(*a) $__a__.color(*a) end
8
- def colorHSV(*a) $__a__.colorHSV(*a) end
9
-
10
- class Application
11
- def initialize_color
12
- @bg_color = @cur_color = nil
13
- @rgb = ColorTranslatorRGB.new(100, 100, 100, 100)
14
- @hsv = ColorTranslatorHSV.new(100, 100, 100, 100)
15
- end
16
- private :initialize_color
17
-
18
- attr_reader :cur_color # for test
19
-
20
- def background(x, y = nil, z = nil, a = nil)
21
- GL.ClearColor(*@rgb.norm(x, y, z, a))
22
- clear
23
- end
24
-
25
- def backgroundHSV(x, y = nil, z = nil, a = nil)
26
- GL.ClearColor(*@hsv.norm(x, y, z, a))
27
- clear
28
- end
29
-
30
- def clear
31
- GL.Clear(GL::COLOR_BUFFER_BIT | GL::DEPTH_BUFFER_BIT)
32
- end
33
- private :clear
34
-
35
- def color(x, y = nil, z = nil, a = nil)
36
- @cur_color = [x, y, z, a]
37
- GL.Color(*@rgb.norm(x, y, z, a))
38
- end
39
-
40
- def colorHSV(x, y = nil, z = nil, a = nil)
41
- GL.Color(*@hsv.norm(x, y, z, a))
42
- end
43
- end
44
- end
1
+ # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
2
+ # License: Ruby License
3
+
4
+ module SGL
5
+ def background(*a) $__a__.background(*a) end
6
+ def backgroundHSV(*a) $__a__.backgroundHSV(*a) end
7
+ def color(*a) $__a__.color(*a) end
8
+ def colorHSV(*a) $__a__.colorHSV(*a) end
9
+
10
+ class Application
11
+ def initialize_color
12
+ @bg_color = @cur_color = nil
13
+ @rgb = ColorTranslatorRGB.new(100, 100, 100, 100)
14
+ @hsv = ColorTranslatorHSV.new(100, 100, 100, 100)
15
+ end
16
+ private :initialize_color
17
+
18
+ attr_reader :cur_color # for test
19
+
20
+ def background(x, y = nil, z = nil, a = nil)
21
+ GL.ClearColor(*@rgb.norm(x, y, z, a))
22
+ clear
23
+ end
24
+
25
+ def backgroundHSV(x, y = nil, z = nil, a = nil)
26
+ GL.ClearColor(*@hsv.norm(x, y, z, a))
27
+ clear
28
+ end
29
+
30
+ def clear
31
+ GL.Clear(GL::COLOR_BUFFER_BIT | GL::DEPTH_BUFFER_BIT)
32
+ end
33
+ private :clear
34
+
35
+ def color(x, y = nil, z = nil, a = nil)
36
+ @cur_color = [x, y, z, a]
37
+ GL.Color(*@rgb.norm(x, y, z, a))
38
+ end
39
+
40
+ def colorHSV(x, y = nil, z = nil, a = nil)
41
+ GL.Color(*@hsv.norm(x, y, z, a))
42
+ end
43
+ end
44
+ end
@@ -1,260 +1,260 @@
1
- # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
2
- # License: Ruby License
3
-
4
- module SGL
5
- LINES = GL::LINES
6
- POINTS = GL::POINTS
7
- LINE_STRIP = GL::LINE_STRIP
8
- LINE_LOOP = GL::LINE_LOOP
9
- TRIANGLES = GL::TRIANGLES
10
- TRIANGLE_STRIP = GL::TRIANGLE_STRIP
11
- TRIANGLE_FAN = GL::TRIANGLE_FAN
12
- QUADS = GL::QUADS
13
- QUAD_STRIP = GL::QUAD_STRIP
14
- POLYGON = GL::POLYGON
15
-
16
- # draw
17
- def beginObj(*a) $__a__.beginObj(*a) end
18
- def endObj(*a) $__a__.endObj(*a) end
19
- def push(*a) $__a__.push(*a) end
20
- def pop(*a) $__a__.pop(*a) end
21
- def vertex(*a) $__a__.vertex(*a) end
22
- def normal(*a) $__a__.normal(*a) end
23
- def translate(*a) $__a__.translate(*a) end
24
- def rotateX(*a) $__a__.rotateX(*a) end
25
- def rotateY(*a) $__a__.rotateY(*a) end
26
- def rotateZ(*a) $__a__.rotateZ(*a) end
27
- def scale(*a) $__a__.scale(*a) end
28
- def point(*a) $__a__.point(*a) end
29
- def lineWidth(*a) $__a__.lineWidth(*a) end
30
- def line(*a) $__a__.line(*a) end
31
- def rect(*a) $__a__.rect(*a) end
32
- def triangle(*a) $__a__.triangle(*a) end
33
- def circle(*a) $__a__.circle(*a) end
34
- def box(*a) $__a__.box(*a) end
35
- def cube(*a) $__a__.cube(*a) end
36
-
37
- class Application
38
- LINES = GL::LINES
39
- POINTS = GL::POINTS
40
- LINE_STRIP = GL::LINE_STRIP
41
- LINE_LOOP = GL::LINE_LOOP
42
- TRIANGLES = GL::TRIANGLES
43
- TRIANGLE_STRIP = GL::TRIANGLE_STRIP
44
- TRIANGLE_FAN = GL::TRIANGLE_FAN
45
- QUADS = GL::QUADS
46
- QUAD_STRIP = GL::QUAD_STRIP
47
- POLYGON = GL::POLYGON
48
-
49
- # draw primitive
50
- def beginObj(mode = POLYGON)
51
- GL.Begin(mode)
52
- end
53
-
54
- def endObj
55
- GL.End
56
- end
57
-
58
- def push
59
- GL.PushMatrix
60
- end
61
-
62
- def pop
63
- GL.PopMatrix
64
- end
65
-
66
- def vertex(a, b = nil, c = nil, d = nil)
67
- GL.Vertex(a, b, c, d) if d
68
- GL.Vertex(a, b, c) if c
69
- GL.Vertex(a, b)
70
- end
71
-
72
- def normal(a, b = nil, c = nil)
73
- GL.Normal(a, b, c)
74
- end
75
-
76
- # matrix manipulation
77
- def translate(a, b, c = 0)
78
- GL.Translate(a, b, c)
79
- end
80
-
81
- def rotateX(a)
82
- GL.Rotate(a, 1, 0, 0)
83
- end
84
-
85
- def rotateY(a)
86
- GL.Rotate(a, 0, 1, 0)
87
- end
88
-
89
- def rotateZ(a)
90
- GL.Rotate(a, 0, 0, 1)
91
- end
92
-
93
- def scale(a)
94
- GL.Scale(a, a, a)
95
- end
96
-
97
- # simple draw
98
- def point(a, b, c = nil)
99
- GL.Begin(GL::POINTS)
100
- if c
101
- GL.Vertex(a, b, c)
102
- else
103
- GL.Vertex(a, b)
104
- end
105
- GL.End
106
- end
107
-
108
- def lineWidth(w)
109
- GL.LineWidth(w)
110
- end
111
-
112
- def line(a, b, c, d, e = nil, f = nil)
113
- GL.Begin(GL::LINES)
114
- if e && f
115
- GL.Vertex(a, b, c) # 3D
116
- GL.Vertex(d, e, f)
117
- else
118
- GL.Vertex(a, b) # 2D
119
- GL.Vertex(c, d)
120
- end
121
- GL.End
122
- end
123
-
124
- def rect(a, b, c, d)
125
- GL.Rect(a, b, c, d)
126
- end
127
-
128
- def triangle(a, b, c, d, e, f)
129
- GL.Begin(GL::TRIANGLES)
130
- GL.Vertex(a, b)
131
- GL.Vertex(c, d)
132
- GL.Vertex(e, f)
133
- GL.End
134
- end
135
-
136
- def circleUnit(style = LINE_LOOP, div = nil)
137
- div = 32 if div.nil?
138
- e = 2 * Math::PI / div
139
- GL.Begin(style)
140
- div.times {|i|
141
- rad = i * e
142
- x = Math.cos(rad)
143
- y = Math.sin(rad)
144
- GL.Vertex(x, y)
145
- }
146
- GL.End
147
- end
148
- private :circleUnit
149
-
150
- def circle(x, y, r, style = LINE_LOOP, div = nil)
151
- GL.PushMatrix
152
- GL.Translate(x, y, 0)
153
- GL.Scale(r, r, r)
154
- circleUnit(style, div)
155
- GL.PopMatrix
156
- end
157
-
158
- def box(x1, y1, z1, x2, y2, z2)
159
- box = [
160
- [x1, y1, z1], # 0 back left bottom
161
- [x2, y1, z1], # 1 back right bottom
162
- [x2, y2, z1], # 2 back right top
163
- [x1, y2, z1], # 3 back left top
164
- [x1, y1, z2], # 4 front left bottom
165
- [x2, y1, z2], # 5 front right bottom
166
- [x2, y2, z2], # 6 front right top
167
- [x1, y2, z2] # 7 front left top
168
- ]
169
- GL.Begin(GL::QUADS)
170
- GL.Vertex(box[1]) # back
171
- GL.Vertex(box[0])
172
- GL.Vertex(box[3])
173
- GL.Vertex(box[2])
174
- GL.Vertex(box[0]) # left
175
- GL.Vertex(box[4])
176
- GL.Vertex(box[7])
177
- GL.Vertex(box[3])
178
- GL.Vertex(box[4]) # front
179
- GL.Vertex(box[5])
180
- GL.Vertex(box[6])
181
- GL.Vertex(box[7])
182
- GL.Vertex(box[5]) # right
183
- GL.Vertex(box[1])
184
- GL.Vertex(box[2])
185
- GL.Vertex(box[6])
186
- GL.Vertex(box[7]) # top
187
- GL.Vertex(box[6])
188
- GL.Vertex(box[2])
189
- GL.Vertex(box[3])
190
- GL.Vertex(box[0]) # bottom
191
- GL.Vertex(box[1])
192
- GL.Vertex(box[5])
193
- GL.Vertex(box[4])
194
- GL.End
195
- end
196
-
197
- def cube(x, y, z, s)
198
- s = s / 2
199
- box(x - s, y - s, z - s, x + s, y + s, z + s)
200
- end
201
- end
202
-
203
- # This class is not used for now.
204
- class FasterCircle
205
- # circle
206
- def self.circleUnit(style=LINE_LOOP, div=nil)
207
- div = 32 if div == nil
208
- e = 2 * Math::PI / div
209
- beginObj(style)
210
- div.times {|i|
211
- rad = i * e
212
- x = Math.cos(rad)
213
- y = Math.sin(rad)
214
- vertex(x, y)
215
- }
216
- endObj()
217
- end
218
-
219
- def self.make_list
220
- GL.NewList(1, GL::COMPILE)
221
- self.circleUnit(LINE_LOOP, 32)
222
- GL.EndList()
223
- GL.NewList(2, GL::COMPILE)
224
- self.circleUnit(POLYGON, 32)
225
- GL.EndList()
226
- GL.NewList(3, GL::COMPILE)
227
- self.circleUnit(LINE_LOOP, 6)
228
- GL.EndList()
229
- GL.NewList(4, GL::COMPILE)
230
- self.circleUnit(POLYGON, 6)
231
- GL.EndList()
232
- end
233
-
234
- def self.circleUnitList(style=LINE_LOOP, div=nil)
235
- if div == 32
236
- if style == LINE_LOOP
237
- GL.CallList(1)
238
- elsif style == POLYGON
239
- GL.CallList(2)
240
- end
241
- elsif div == 6
242
- if style == LINE_LOOP
243
- GL.CallList(3)
244
- elsif style == POLYGON
245
- GL.CallList(4)
246
- end
247
- end
248
- end
249
-
250
- def self.circle(x, y, r, style=LINE_LOOP, div=nil)
251
- push()
252
- translate(x, y)
253
- scale(r)
254
- #circleUnit(style, div)
255
- self.circleUnitList(style, div)
256
- pop()
257
- end
258
- end
259
-
260
- end
1
+ # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
2
+ # License: Ruby License
3
+
4
+ module SGL
5
+ LINES = GL::LINES
6
+ POINTS = GL::POINTS
7
+ LINE_STRIP = GL::LINE_STRIP
8
+ LINE_LOOP = GL::LINE_LOOP
9
+ TRIANGLES = GL::TRIANGLES
10
+ TRIANGLE_STRIP = GL::TRIANGLE_STRIP
11
+ TRIANGLE_FAN = GL::TRIANGLE_FAN
12
+ QUADS = GL::QUADS
13
+ QUAD_STRIP = GL::QUAD_STRIP
14
+ POLYGON = GL::POLYGON
15
+
16
+ # draw
17
+ def beginObj(*a) $__a__.beginObj(*a) end
18
+ def endObj(*a) $__a__.endObj(*a) end
19
+ def push(*a) $__a__.push(*a) end
20
+ def pop(*a) $__a__.pop(*a) end
21
+ def vertex(*a) $__a__.vertex(*a) end
22
+ def normal(*a) $__a__.normal(*a) end
23
+ def translate(*a) $__a__.translate(*a) end
24
+ def rotateX(*a) $__a__.rotateX(*a) end
25
+ def rotateY(*a) $__a__.rotateY(*a) end
26
+ def rotateZ(*a) $__a__.rotateZ(*a) end
27
+ def scale(*a) $__a__.scale(*a) end
28
+ def point(*a) $__a__.point(*a) end
29
+ def lineWidth(*a) $__a__.lineWidth(*a) end
30
+ def line(*a) $__a__.line(*a) end
31
+ def rect(*a) $__a__.rect(*a) end
32
+ def triangle(*a) $__a__.triangle(*a) end
33
+ def circle(*a) $__a__.circle(*a) end
34
+ def box(*a) $__a__.box(*a) end
35
+ def cube(*a) $__a__.cube(*a) end
36
+
37
+ class Application
38
+ LINES = GL::LINES
39
+ POINTS = GL::POINTS
40
+ LINE_STRIP = GL::LINE_STRIP
41
+ LINE_LOOP = GL::LINE_LOOP
42
+ TRIANGLES = GL::TRIANGLES
43
+ TRIANGLE_STRIP = GL::TRIANGLE_STRIP
44
+ TRIANGLE_FAN = GL::TRIANGLE_FAN
45
+ QUADS = GL::QUADS
46
+ QUAD_STRIP = GL::QUAD_STRIP
47
+ POLYGON = GL::POLYGON
48
+
49
+ # draw primitive
50
+ def beginObj(mode = POLYGON)
51
+ GL.Begin(mode)
52
+ end
53
+
54
+ def endObj
55
+ GL.End
56
+ end
57
+
58
+ def push
59
+ GL.PushMatrix
60
+ end
61
+
62
+ def pop
63
+ GL.PopMatrix
64
+ end
65
+
66
+ def vertex(a, b = nil, c = nil, d = nil)
67
+ GL.Vertex(a, b, c, d) if d
68
+ GL.Vertex(a, b, c) if c
69
+ GL.Vertex(a, b)
70
+ end
71
+
72
+ def normal(a, b = nil, c = nil)
73
+ GL.Normal(a, b, c)
74
+ end
75
+
76
+ # matrix manipulation
77
+ def translate(a, b, c = 0)
78
+ GL.Translate(a, b, c)
79
+ end
80
+
81
+ def rotateX(a)
82
+ GL.Rotate(a, 1, 0, 0)
83
+ end
84
+
85
+ def rotateY(a)
86
+ GL.Rotate(a, 0, 1, 0)
87
+ end
88
+
89
+ def rotateZ(a)
90
+ GL.Rotate(a, 0, 0, 1)
91
+ end
92
+
93
+ def scale(a)
94
+ GL.Scale(a, a, a)
95
+ end
96
+
97
+ # simple draw
98
+ def point(a, b, c = nil)
99
+ GL.Begin(GL::POINTS)
100
+ if c
101
+ GL.Vertex(a, b, c)
102
+ else
103
+ GL.Vertex(a, b)
104
+ end
105
+ GL.End
106
+ end
107
+
108
+ def lineWidth(w)
109
+ GL.LineWidth(w)
110
+ end
111
+
112
+ def line(a, b, c, d, e = nil, f = nil)
113
+ GL.Begin(GL::LINES)
114
+ if e && f
115
+ GL.Vertex(a, b, c) # 3D
116
+ GL.Vertex(d, e, f)
117
+ else
118
+ GL.Vertex(a, b) # 2D
119
+ GL.Vertex(c, d)
120
+ end
121
+ GL.End
122
+ end
123
+
124
+ def rect(a, b, c, d)
125
+ GL.Rect(a, b, c, d)
126
+ end
127
+
128
+ def triangle(a, b, c, d, e, f)
129
+ GL.Begin(GL::TRIANGLES)
130
+ GL.Vertex(a, b)
131
+ GL.Vertex(c, d)
132
+ GL.Vertex(e, f)
133
+ GL.End
134
+ end
135
+
136
+ def circleUnit(style = LINE_LOOP, div = nil)
137
+ div = 32 if div.nil?
138
+ e = 2 * Math::PI / div
139
+ GL.Begin(style)
140
+ div.times {|i|
141
+ rad = i * e
142
+ x = Math.cos(rad)
143
+ y = Math.sin(rad)
144
+ GL.Vertex(x, y)
145
+ }
146
+ GL.End
147
+ end
148
+ private :circleUnit
149
+
150
+ def circle(x, y, r, style = LINE_LOOP, div = nil)
151
+ GL.PushMatrix
152
+ GL.Translate(x, y, 0)
153
+ GL.Scale(r, r, r)
154
+ circleUnit(style, div)
155
+ GL.PopMatrix
156
+ end
157
+
158
+ def box(x1, y1, z1, x2, y2, z2)
159
+ box = [
160
+ [x1, y1, z1], # 0 back left bottom
161
+ [x2, y1, z1], # 1 back right bottom
162
+ [x2, y2, z1], # 2 back right top
163
+ [x1, y2, z1], # 3 back left top
164
+ [x1, y1, z2], # 4 front left bottom
165
+ [x2, y1, z2], # 5 front right bottom
166
+ [x2, y2, z2], # 6 front right top
167
+ [x1, y2, z2] # 7 front left top
168
+ ]
169
+ GL.Begin(GL::QUADS)
170
+ GL.Vertex(box[1]) # back
171
+ GL.Vertex(box[0])
172
+ GL.Vertex(box[3])
173
+ GL.Vertex(box[2])
174
+ GL.Vertex(box[0]) # left
175
+ GL.Vertex(box[4])
176
+ GL.Vertex(box[7])
177
+ GL.Vertex(box[3])
178
+ GL.Vertex(box[4]) # front
179
+ GL.Vertex(box[5])
180
+ GL.Vertex(box[6])
181
+ GL.Vertex(box[7])
182
+ GL.Vertex(box[5]) # right
183
+ GL.Vertex(box[1])
184
+ GL.Vertex(box[2])
185
+ GL.Vertex(box[6])
186
+ GL.Vertex(box[7]) # top
187
+ GL.Vertex(box[6])
188
+ GL.Vertex(box[2])
189
+ GL.Vertex(box[3])
190
+ GL.Vertex(box[0]) # bottom
191
+ GL.Vertex(box[1])
192
+ GL.Vertex(box[5])
193
+ GL.Vertex(box[4])
194
+ GL.End
195
+ end
196
+
197
+ def cube(x, y, z, s)
198
+ s = s / 2
199
+ box(x - s, y - s, z - s, x + s, y + s, z + s)
200
+ end
201
+ end
202
+
203
+ # This class is not used for now.
204
+ class FasterCircle
205
+ # circle
206
+ def self.circleUnit(style=LINE_LOOP, div=nil)
207
+ div = 32 if div == nil
208
+ e = 2 * Math::PI / div
209
+ beginObj(style)
210
+ div.times {|i|
211
+ rad = i * e
212
+ x = Math.cos(rad)
213
+ y = Math.sin(rad)
214
+ vertex(x, y)
215
+ }
216
+ endObj()
217
+ end
218
+
219
+ def self.make_list
220
+ GL.NewList(1, GL::COMPILE)
221
+ self.circleUnit(LINE_LOOP, 32)
222
+ GL.EndList()
223
+ GL.NewList(2, GL::COMPILE)
224
+ self.circleUnit(POLYGON, 32)
225
+ GL.EndList()
226
+ GL.NewList(3, GL::COMPILE)
227
+ self.circleUnit(LINE_LOOP, 6)
228
+ GL.EndList()
229
+ GL.NewList(4, GL::COMPILE)
230
+ self.circleUnit(POLYGON, 6)
231
+ GL.EndList()
232
+ end
233
+
234
+ def self.circleUnitList(style=LINE_LOOP, div=nil)
235
+ if div == 32
236
+ if style == LINE_LOOP
237
+ GL.CallList(1)
238
+ elsif style == POLYGON
239
+ GL.CallList(2)
240
+ end
241
+ elsif div == 6
242
+ if style == LINE_LOOP
243
+ GL.CallList(3)
244
+ elsif style == POLYGON
245
+ GL.CallList(4)
246
+ end
247
+ end
248
+ end
249
+
250
+ def self.circle(x, y, r, style=LINE_LOOP, div=nil)
251
+ push()
252
+ translate(x, y)
253
+ scale(r)
254
+ #circleUnit(style, div)
255
+ self.circleUnitList(style, div)
256
+ pop()
257
+ end
258
+ end
259
+
260
+ end