sgl 0.4.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,9 +1,9 @@
1
- #!/usr/bin/env ruby -w
2
- # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
3
- # License: Ruby License
4
-
5
- require "drb/drb"
6
-
7
- module Sgl
8
- DEFAULT_URI = "druby://localhost:12345"
9
- end
1
+ #!/usr/bin/env ruby -w
2
+ # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
3
+ # License: Ruby License
4
+
5
+ require "drb/drb"
6
+
7
+ module Sgl
8
+ DEFAULT_URI = "druby://localhost:12345"
9
+ end
@@ -1,58 +1,58 @@
1
- #!/usr/bin/env ruby -w
2
- # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
3
- # License: Ruby License
4
-
5
- $LOAD_PATH.unshift("..") if !$LOAD_PATH.include?("..")
6
- require "sgl/sgl-connect"
7
-
8
- module Sgl
9
- class Puts
10
- def initialize(stream=$stdout)
11
- stream.sync = true
12
- @stream = stream
13
- end
14
-
15
- def puts(str)
16
- @stream.puts(str)
17
- end
18
- end
19
-
20
- class Server
21
- def self.main(argv)
22
- server = self.new
23
- server.run
24
- end
25
-
26
- def run(duration=0)
27
- uri = DEFAULT_URI
28
- DRb.start_service(uri, Puts.new)
29
- puts DRb.uri
30
-
31
- if duration == 0
32
- sleep
33
- else
34
- sleep duration
35
- end
36
- end
37
- end
38
- end
39
-
40
- if $0 == __FILE__
41
- require "test/unit"
42
- $__test_sgl__ = true
43
- end
44
-
45
- if defined?($__test_sgl__) && $__test_sgl__
46
- class TestSglServer < Test::Unit::TestCase #:nodoc:
47
- def test_all
48
- server = Sgl::Server.new
49
- Thread.start {
50
- server.run(5)
51
- }
52
-
53
- uri = Sgl::DEFAULT_URI
54
- there = DRbObject.new_with_uri(uri)
55
- there.puts('Hello, World.')
56
- end
57
- end
58
- end
1
+ #!/usr/bin/env ruby -w
2
+ # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
3
+ # License: Ruby License
4
+
5
+ $LOAD_PATH.unshift("..") if !$LOAD_PATH.include?("..")
6
+ require "sgl/sgl-connect"
7
+
8
+ module Sgl
9
+ class Puts
10
+ def initialize(stream=$stdout)
11
+ stream.sync = true
12
+ @stream = stream
13
+ end
14
+
15
+ def puts(str)
16
+ @stream.puts(str)
17
+ end
18
+ end
19
+
20
+ class Server
21
+ def self.main(argv)
22
+ server = self.new
23
+ server.run
24
+ end
25
+
26
+ def run(duration=0)
27
+ uri = DEFAULT_URI
28
+ DRb.start_service(uri, Puts.new)
29
+ puts DRb.uri
30
+
31
+ if duration == 0
32
+ sleep
33
+ else
34
+ sleep duration
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ if $0 == __FILE__
41
+ require "test/unit"
42
+ $__test_sgl__ = true
43
+ end
44
+
45
+ if defined?($__test_sgl__) && $__test_sgl__
46
+ class TestSglServer < Test::Unit::TestCase #:nodoc:
47
+ def test_all
48
+ server = Sgl::Server.new
49
+ Thread.start {
50
+ server.run(5)
51
+ }
52
+
53
+ uri = Sgl::DEFAULT_URI
54
+ there = DRbObject.new_with_uri(uri)
55
+ there.puts('Hello, World.')
56
+ end
57
+ end
58
+ end
@@ -1,216 +1,216 @@
1
- # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
2
- # License: Ruby License
3
-
4
- $LOAD_PATH.unshift("..") if !$LOAD_PATH.include?("..")
5
-
6
- module SGL
7
- =begin
8
- # not yet.
9
- module SpringModule
10
- end
11
- =end
12
-
13
- class Spring
14
- EPSILON = 0.01
15
-
16
- # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
17
- def initialize(target, initial, ks, kd, e=EPSILON, v=0)
18
- @target, @initial, @ks, @kd, @e, @v = target, initial, ks, kd, e, v
19
- @x = @initial
20
- @moving = true
21
- end
22
-
23
- attr_reader :x, :target
24
- attr_accessor :v, :ks, :kd
25
-
26
- def inspect
27
- mov = @moving ? "��" : "��"
28
- sprintf("[%s%.1f %.1f %.1f %.1f %.1f]", mov, @target, @x, @v, @ks, @kd)
29
- end
30
-
31
- def target=(num)
32
- @target = num
33
- @moving = true
34
- end
35
-
36
- def x=(num)
37
- @x = num
38
- @moving = true
39
- end
40
-
41
- def move
42
- return if ! @moving
43
- if @x.is_a?(Vector)
44
- l = @x - @target
45
- diff = l.length
46
- if diff < @e && @v.length < @e
47
- @moving = false
48
- return
49
- end
50
- #fa = -(@ks * diff + @kd * @v)
51
- ln = l.normalize
52
- fak = -(@ks * diff + @kd * @v.length)
53
- fa = ln.scale(fak)
54
- @v += fa
55
- @x += @v
56
- #p ['sp', fa, fak, @v, @x]
57
- else
58
- diff = @x - @target
59
- if diff.abs < @e && @v.abs < @e
60
- @moving = false
61
- return
62
- end
63
- fa = -(@ks * diff + @kd * @v)
64
- @v += fa
65
- @x += @v
66
- end
67
- end
68
- end
69
-
70
- class ISpring < Spring
71
- # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
72
- def initialize(target, initial, ks, kd, e=EPSILON, v=0)
73
- super(target, initial, 1.0/ks, 1.0/kd, e, v) # ks��kd��inverse����B
74
- end
75
- end
76
-
77
- class NumSpring
78
- EPSILON = 0.01
79
-
80
- # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
81
- def initialize(target, initial, ks, kd, e=EPSILON, v=0)
82
- @target, @initial, @ks, @kd, @e, @v = target, initial, ks, kd, e, v
83
- @x = @initial
84
- @moving = true
85
- end
86
-
87
- attr_reader :x, :target
88
- attr_accessor :v, :ks, :kd, :moving
89
-
90
- def inspect
91
- mov = @moving ? "��" : "��"
92
- sprintf("[%s%.1f %.1f %.1f %.1f %.1f]", mov, @target, @x, @v, @ks, @kd)
93
- end
94
-
95
- def target=(num)
96
- @target = num
97
- @moving = true
98
- end
99
-
100
- def x=(num)
101
- @x = num
102
- @moving = true
103
- end
104
-
105
- def move
106
- return if ! @moving
107
- diff = @target - @x
108
- if diff.abs < @e && @v.abs < @e
109
- @moving = false
110
- return
111
- end
112
- @v += (diff / @ks)
113
- @v *= @kd
114
- @x += @v
115
- end
116
- end
117
-
118
- class INumSpring < NumSpring
119
- # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
120
- def initialize(target, initial, ks, kd, e=EPSILON, v=0)
121
- super(target, initial, ks, 1.0 - 1.0/kd, e, v) # kd����inverse����B
122
- end
123
- end
124
- end
125
-
126
- =begin
127
- class NuSpringPos
128
- EPSILON = 0.01
129
-
130
- # �����l�A�ڕW�ƂȂ�l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
131
- def initialize(x, y, ks, kd, e=EPSILON)
132
- @x, @y, @ks, @kd, @e = x, y, ks, kd, e
133
- @vx, @vy, @tx, @ty = 0, 0, 0, 0
134
- @moving = true
135
- end
136
-
137
- attr_reader :x, :y, :moving
138
-
139
- def set_target(tx, ty)
140
- @tx, @ty = tx, ty
141
- end
142
-
143
- def move
144
- return if ! @moving
145
-
146
- #diff = @target - @x
147
- diff = @tx - @x
148
- if diff.abs < @e && @v.abs < @e
149
- @moving = false
150
- return
151
- end
152
- @v += (diff / @ks)
153
- @v *= @kd
154
- @x += @v
155
- end
156
- end
157
-
158
- class NuNumSpring
159
- EPSILON = 0.01
160
-
161
- # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
162
- def initialize(target, initial, ks, kd, e=EPSILON)
163
- @target, @initial, @ks, @kd, @e = target, initial, ks, kd, e
164
- @x = @initial
165
- @v = 0
166
- @moving = true
167
- end
168
-
169
- attr_reader :v
170
- attr_accessor :x, :target, :moving, :ks, :kd
171
-
172
- def inspect
173
- mov = @moving ? "��" : "��"
174
- sprintf("[%s%.1f %.1f %.1f %.1f %.1f]", mov, @target, @x, @v, @ks, @kd)
175
- end
176
-
177
- def move
178
- return if ! @moving
179
- diff = @target - @x
180
- if diff.abs < @e && @v.abs < @e
181
- @moving = false
182
- return
183
- end
184
- @v += (diff / @ks)
185
- @v *= @kd
186
- @x += @v
187
- end
188
-
189
- def rel_ks_notuse(r)
190
- @ks += r
191
- @ks = 1 if @ks <= 0
192
- end
193
- end
194
- =end
195
-
196
- if $0 == __FILE__
197
- require "test/unit"
198
- $__test_sgl__ = true
199
- end
200
-
201
- if defined?($__test_sgl__) && $__test_sgl__
202
- class TestSglSpring < Test::Unit::TestCase #:nodoc:
203
- def test_all
204
-
205
- s = SGL::NumSpring.new(0, 1, 0.1, 0.1)
206
- assert_equal(1, s.x)
207
- assert_equal(true, s.moving)
208
-
209
- s.move
210
- assert_equal(0.0, s.x)
211
-
212
- s.move
213
- assert_equal(-0.1, s.x)
214
- end
215
- end
216
- end
1
+ # Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
2
+ # License: Ruby License
3
+
4
+ $LOAD_PATH.unshift("..") if !$LOAD_PATH.include?("..")
5
+
6
+ module SGL
7
+ =begin
8
+ # not yet.
9
+ module SpringModule
10
+ end
11
+ =end
12
+
13
+ class Spring
14
+ EPSILON = 0.01
15
+
16
+ # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
17
+ def initialize(target, initial, ks, kd, e=EPSILON, v=0)
18
+ @target, @initial, @ks, @kd, @e, @v = target, initial, ks, kd, e, v
19
+ @x = @initial
20
+ @moving = true
21
+ end
22
+
23
+ attr_reader :x, :target
24
+ attr_accessor :v, :ks, :kd
25
+
26
+ def inspect
27
+ mov = @moving ? "��" : "��"
28
+ sprintf("[%s%.1f %.1f %.1f %.1f %.1f]", mov, @target, @x, @v, @ks, @kd)
29
+ end
30
+
31
+ def target=(num)
32
+ @target = num
33
+ @moving = true
34
+ end
35
+
36
+ def x=(num)
37
+ @x = num
38
+ @moving = true
39
+ end
40
+
41
+ def move
42
+ return if ! @moving
43
+ if @x.is_a?(Vector)
44
+ l = @x - @target
45
+ diff = l.length
46
+ if diff < @e && @v.length < @e
47
+ @moving = false
48
+ return
49
+ end
50
+ #fa = -(@ks * diff + @kd * @v)
51
+ ln = l.normalize
52
+ fak = -(@ks * diff + @kd * @v.length)
53
+ fa = ln.scale(fak)
54
+ @v += fa
55
+ @x += @v
56
+ #p ['sp', fa, fak, @v, @x]
57
+ else
58
+ diff = @x - @target
59
+ if diff.abs < @e && @v.abs < @e
60
+ @moving = false
61
+ return
62
+ end
63
+ fa = -(@ks * diff + @kd * @v)
64
+ @v += fa
65
+ @x += @v
66
+ end
67
+ end
68
+ end
69
+
70
+ class ISpring < Spring
71
+ # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
72
+ def initialize(target, initial, ks, kd, e=EPSILON, v=0)
73
+ super(target, initial, 1.0/ks, 1.0/kd, e, v) # ks��kd��inverse����B
74
+ end
75
+ end
76
+
77
+ class NumSpring
78
+ EPSILON = 0.01
79
+
80
+ # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
81
+ def initialize(target, initial, ks, kd, e=EPSILON, v=0)
82
+ @target, @initial, @ks, @kd, @e, @v = target, initial, ks, kd, e, v
83
+ @x = @initial
84
+ @moving = true
85
+ end
86
+
87
+ attr_reader :x, :target
88
+ attr_accessor :v, :ks, :kd, :moving
89
+
90
+ def inspect
91
+ mov = @moving ? "��" : "��"
92
+ sprintf("[%s%.1f %.1f %.1f %.1f %.1f]", mov, @target, @x, @v, @ks, @kd)
93
+ end
94
+
95
+ def target=(num)
96
+ @target = num
97
+ @moving = true
98
+ end
99
+
100
+ def x=(num)
101
+ @x = num
102
+ @moving = true
103
+ end
104
+
105
+ def move
106
+ return if ! @moving
107
+ diff = @target - @x
108
+ if diff.abs < @e && @v.abs < @e
109
+ @moving = false
110
+ return
111
+ end
112
+ @v += (diff / @ks)
113
+ @v *= @kd
114
+ @x += @v
115
+ end
116
+ end
117
+
118
+ class INumSpring < NumSpring
119
+ # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
120
+ def initialize(target, initial, ks, kd, e=EPSILON, v=0)
121
+ super(target, initial, ks, 1.0 - 1.0/kd, e, v) # kd����inverse����B
122
+ end
123
+ end
124
+ end
125
+
126
+ =begin
127
+ class NuSpringPos
128
+ EPSILON = 0.01
129
+
130
+ # �����l�A�ڕW�ƂȂ�l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
131
+ def initialize(x, y, ks, kd, e=EPSILON)
132
+ @x, @y, @ks, @kd, @e = x, y, ks, kd, e
133
+ @vx, @vy, @tx, @ty = 0, 0, 0, 0
134
+ @moving = true
135
+ end
136
+
137
+ attr_reader :x, :y, :moving
138
+
139
+ def set_target(tx, ty)
140
+ @tx, @ty = tx, ty
141
+ end
142
+
143
+ def move
144
+ return if ! @moving
145
+
146
+ #diff = @target - @x
147
+ diff = @tx - @x
148
+ if diff.abs < @e && @v.abs < @e
149
+ @moving = false
150
+ return
151
+ end
152
+ @v += (diff / @ks)
153
+ @v *= @kd
154
+ @x += @v
155
+ end
156
+ end
157
+
158
+ class NuNumSpring
159
+ EPSILON = 0.01
160
+
161
+ # �ڕW�ƂȂ�l�A�����l�A�o�l�萔�A�e���萔�A�C�v�V����(�\���������l)
162
+ def initialize(target, initial, ks, kd, e=EPSILON)
163
+ @target, @initial, @ks, @kd, @e = target, initial, ks, kd, e
164
+ @x = @initial
165
+ @v = 0
166
+ @moving = true
167
+ end
168
+
169
+ attr_reader :v
170
+ attr_accessor :x, :target, :moving, :ks, :kd
171
+
172
+ def inspect
173
+ mov = @moving ? "��" : "��"
174
+ sprintf("[%s%.1f %.1f %.1f %.1f %.1f]", mov, @target, @x, @v, @ks, @kd)
175
+ end
176
+
177
+ def move
178
+ return if ! @moving
179
+ diff = @target - @x
180
+ if diff.abs < @e && @v.abs < @e
181
+ @moving = false
182
+ return
183
+ end
184
+ @v += (diff / @ks)
185
+ @v *= @kd
186
+ @x += @v
187
+ end
188
+
189
+ def rel_ks_notuse(r)
190
+ @ks += r
191
+ @ks = 1 if @ks <= 0
192
+ end
193
+ end
194
+ =end
195
+
196
+ if $0 == __FILE__
197
+ require "test/unit"
198
+ $__test_sgl__ = true
199
+ end
200
+
201
+ if defined?($__test_sgl__) && $__test_sgl__
202
+ class TestSglSpring < Test::Unit::TestCase #:nodoc:
203
+ def test_all
204
+
205
+ s = SGL::NumSpring.new(0, 1, 0.1, 0.1)
206
+ assert_equal(1, s.x)
207
+ assert_equal(true, s.moving)
208
+
209
+ s.move
210
+ assert_equal(0.0, s.x)
211
+
212
+ s.move
213
+ assert_equal(-0.1, s.x)
214
+ end
215
+ end
216
+ end