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,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