rubysketch 0.3.11 → 0.3.16
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.
- checksums.yaml +4 -4
- data/ChangeLog.md +26 -0
- data/VERSION +1 -1
- data/examples/image.rb +1 -1
- data/lib/rubysketch-processing.rb +1 -1
- data/lib/rubysketch.rb +2 -0
- data/lib/rubysketch/app.rb +13 -0
- data/lib/rubysketch/glsl.rb +2 -2
- data/lib/rubysketch/module.rb +3 -3
- data/lib/rubysketch/processing.rb +407 -244
- data/lib/rubysketch/window.rb +66 -48
- data/test/helper.rb +1 -1
- data/test/processing/test_utility.rb +3 -7
- data/test/processing/test_vector.rb +43 -46
- metadata +3 -2
data/lib/rubysketch/window.rb
CHANGED
@@ -4,81 +4,91 @@ module RubySketch
|
|
4
4
|
class Window < Reflex::Window
|
5
5
|
|
6
6
|
attr_accessor :setup, :update, :draw, :before_draw, :after_draw, :resize,
|
7
|
+
:key_down, :key_up,
|
7
8
|
:pointer_down, :pointer_up, :pointer_move, :pointer_drag,
|
8
|
-
:
|
9
|
+
:motion
|
9
10
|
|
10
11
|
attr_accessor :auto_resize
|
11
12
|
|
12
13
|
attr_reader :canvas, :canvas_painter
|
13
14
|
|
14
|
-
def initialize
|
15
|
-
|
16
|
-
|
17
|
-
@
|
15
|
+
def initialize(width = 500, height = 500, *args, **kwargs, &block)
|
16
|
+
RubySketch.instance_variable_set :@window, self
|
17
|
+
|
18
|
+
@canvas =
|
19
|
+
@canvas_painter = nil
|
20
|
+
@events = []
|
21
|
+
@auto_resize = true
|
22
|
+
@error = nil
|
18
23
|
|
19
24
|
painter.miter_limit = 10
|
20
25
|
resize_canvas 1, 1
|
21
26
|
|
22
|
-
|
27
|
+
root.on(:update) {|e| on_canvas_update e}
|
28
|
+
root.on(:draw) {|e| on_canvas_draw e}
|
29
|
+
root.on(:pointer) {|e| on_canvas_pointer e}
|
30
|
+
|
31
|
+
super(*args, size: [width, height], **kwargs, &block)
|
23
32
|
end
|
24
33
|
|
25
|
-
def start
|
34
|
+
def start(&block)
|
26
35
|
draw_canvas do
|
27
36
|
block.call if block
|
28
37
|
on_setup
|
29
38
|
end
|
30
39
|
end
|
31
40
|
|
32
|
-
def event
|
41
|
+
def event()
|
33
42
|
@events.last
|
34
43
|
end
|
35
44
|
|
36
|
-
def on_setup
|
45
|
+
def on_setup()
|
37
46
|
call_block @setup, nil
|
38
47
|
end
|
39
48
|
|
40
|
-
def
|
41
|
-
|
42
|
-
redraw
|
49
|
+
def on_draw(e)
|
50
|
+
update_canvas_view
|
43
51
|
end
|
44
52
|
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
x, y, w, h = coord_converter
|
49
|
-
e.painter.image @canvas, x, y, @canvas.width * w, @canvas.height * h
|
50
|
-
end
|
51
|
-
|
52
|
-
def on_key (e)
|
53
|
-
draw_canvas {call_block @key, e} if @key
|
53
|
+
def on_resize(e)
|
54
|
+
resize_canvas e.width, e.height if @auto_resize
|
55
|
+
draw_canvas {call_block @resize, e} if @resize
|
54
56
|
end
|
55
57
|
|
56
|
-
def
|
58
|
+
def on_key(e)
|
57
59
|
block = case e.type
|
58
|
-
when :down then @
|
59
|
-
when :up then @
|
60
|
-
when :move then e.drag? ? @pointer_drag : @pointer_move
|
60
|
+
when :down then @key_down
|
61
|
+
when :up then @key_up
|
61
62
|
end
|
62
63
|
draw_canvas {call_block block, e} if block
|
63
64
|
end
|
64
65
|
|
65
|
-
def on_motion
|
66
|
+
def on_motion(e)
|
66
67
|
draw_canvas {call_block @motion, e} if @motion
|
67
68
|
end
|
68
69
|
|
69
|
-
def
|
70
|
-
|
71
|
-
|
70
|
+
def on_canvas_update(e)
|
71
|
+
call_block @update, e
|
72
|
+
redraw
|
72
73
|
end
|
73
74
|
|
74
|
-
def
|
75
|
-
|
76
|
-
|
75
|
+
def on_canvas_draw(e)
|
76
|
+
draw_canvas {call_block @draw, e} if @draw
|
77
|
+
e.painter.image @canvas
|
78
|
+
end
|
79
|
+
|
80
|
+
def on_canvas_pointer(e)
|
81
|
+
block = case e.type
|
82
|
+
when :down then @pointer_down
|
83
|
+
when :up then @pointer_up
|
84
|
+
when :move then e.drag? ? @pointer_drag : @pointer_move
|
85
|
+
end
|
86
|
+
draw_canvas {call_block block, e} if block
|
77
87
|
end
|
78
88
|
|
79
89
|
private
|
80
90
|
|
81
|
-
def resize_canvas
|
91
|
+
def resize_canvas(width, height, pixel_density = nil)
|
82
92
|
return nil if width * height == 0
|
83
93
|
|
84
94
|
unless width == @canvas&.width &&
|
@@ -87,9 +97,11 @@ module RubySketch
|
|
87
97
|
|
88
98
|
old_canvas = @canvas
|
89
99
|
old_painter = @canvas_painter
|
100
|
+
cs = old_canvas&.color_space || Rays::RGBA
|
101
|
+
pd = pixel_density ||
|
102
|
+
old_painter&.pixel_density ||
|
103
|
+
painter .pixel_density
|
90
104
|
|
91
|
-
cs = old_canvas&.color_space || Rays::RGBA
|
92
|
-
pd = pixel_density || painter.pixel_density
|
93
105
|
@canvas = Rays::Image.new width, height, cs, pd
|
94
106
|
@canvas_painter = @canvas.painter
|
95
107
|
|
@@ -104,11 +116,7 @@ module RubySketch
|
|
104
116
|
@canvas_painter
|
105
117
|
end
|
106
118
|
|
107
|
-
def
|
108
|
-
size width, height
|
109
|
-
end
|
110
|
-
|
111
|
-
def copy_painter_attributes (from, to)
|
119
|
+
def copy_painter_attributes(from, to)
|
112
120
|
to.fill = from.fill
|
113
121
|
to.stroke = from.stroke
|
114
122
|
to.stroke_width = from.stroke_width
|
@@ -118,39 +126,49 @@ module RubySketch
|
|
118
126
|
to.font = from.font
|
119
127
|
end
|
120
128
|
|
121
|
-
def
|
129
|
+
def resize_window(width, height)
|
130
|
+
size width, height
|
131
|
+
end
|
132
|
+
|
133
|
+
def update_canvas_view()
|
134
|
+
scrollx, scrolly, zoom = get_scroll_and_zoom
|
135
|
+
root.scroll_to scrollx, scrolly
|
136
|
+
root.zoom zoom
|
137
|
+
end
|
138
|
+
|
139
|
+
def get_scroll_and_zoom()
|
122
140
|
ww, wh = width.to_f, height.to_f
|
123
141
|
cw, ch = @canvas.width.to_f, @canvas.height.to_f
|
124
|
-
return [0, 0, 1
|
142
|
+
return [0, 0, 1] if ww == 0 || wh == 0 || cw == 0 || ch == 0
|
125
143
|
|
126
144
|
wratio, cratio = ww / wh, cw / ch
|
127
145
|
if wratio >= cratio
|
128
146
|
scaled_w = wh * cratio
|
129
|
-
return (ww - scaled_w) / 2, 0, scaled_w / cw
|
147
|
+
return (ww - scaled_w) / 2, 0, scaled_w / cw
|
130
148
|
else
|
131
149
|
scaled_h = ww / cratio
|
132
|
-
return 0, (wh - scaled_h) / 2, ww / cw
|
150
|
+
return 0, (wh - scaled_h) / 2, ww / cw
|
133
151
|
end
|
134
152
|
end
|
135
153
|
|
136
|
-
def draw_canvas
|
154
|
+
def draw_canvas(&block)
|
137
155
|
begin_draw
|
138
156
|
block.call
|
139
157
|
ensure
|
140
158
|
end_draw
|
141
159
|
end
|
142
160
|
|
143
|
-
def begin_draw
|
161
|
+
def begin_draw()
|
144
162
|
@canvas_painter.__send__ :begin_paint
|
145
163
|
@before_draw&.call
|
146
164
|
end
|
147
165
|
|
148
|
-
def end_draw
|
166
|
+
def end_draw()
|
149
167
|
@after_draw&.call
|
150
168
|
@canvas_painter.__send__ :end_paint
|
151
169
|
end
|
152
170
|
|
153
|
-
def call_block
|
171
|
+
def call_block(block, event, *args)
|
154
172
|
@events.push event
|
155
173
|
block.call event, *args if block && !@error
|
156
174
|
rescue Exception => e
|
data/test/helper.rb
CHANGED
@@ -12,7 +12,7 @@ require 'rubysketch'
|
|
12
12
|
include Xot::Test
|
13
13
|
|
14
14
|
|
15
|
-
def assert_equal_vector
|
15
|
+
def assert_equal_vector(v1, v2, delta = 0.000001)
|
16
16
|
assert_in_delta v1.x, v2.x, delta
|
17
17
|
assert_in_delta v1.y, v2.y, delta
|
18
18
|
assert_in_delta v1.z, v2.z, delta
|
@@ -6,15 +6,11 @@ require_relative '../helper'
|
|
6
6
|
|
7
7
|
class TestProcessingUtility < Test::Unit::TestCase
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
def context()
|
10
|
+
RubySketch::Processing::Context.new RubySketch::Window.new
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
Context.new
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_random ()
|
13
|
+
def test_random()
|
18
14
|
c = context
|
19
15
|
|
20
16
|
assert_equal Float, c.random(1).class
|
@@ -6,23 +6,20 @@ require_relative '../helper'
|
|
6
6
|
|
7
7
|
class TestProcessingVector < Test::Unit::TestCase
|
8
8
|
|
9
|
-
P
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
M = Math
|
14
|
-
|
9
|
+
P = RubySketch::Processing
|
10
|
+
V = P::Vector
|
11
|
+
M = Math
|
15
12
|
PI = M::PI
|
16
13
|
|
17
|
-
def vec
|
18
|
-
V.new
|
14
|
+
def vec(*args, **kwargs)
|
15
|
+
V.new(*args, **kwargs)
|
19
16
|
end
|
20
17
|
|
21
|
-
def point
|
22
|
-
Rays::Point.new
|
18
|
+
def point(*args, **kwargs)
|
19
|
+
Rays::Point.new(*args, **kwargs)
|
23
20
|
end
|
24
21
|
|
25
|
-
def test_initialize
|
22
|
+
def test_initialize()
|
26
23
|
assert_equal_vector vec(0, 0, 0), vec()
|
27
24
|
assert_equal_vector vec(1, 0, 0), vec(1)
|
28
25
|
assert_equal_vector vec(1, 2, 0), vec(1, 2)
|
@@ -37,7 +34,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
37
34
|
assert_equal_vector vec(1, 2, 3), vec(point 1, 2, 3)
|
38
35
|
end
|
39
36
|
|
40
|
-
def test_set
|
37
|
+
def test_set()
|
41
38
|
v0 = vec 9, 9, 9
|
42
39
|
|
43
40
|
v = v0.dup; v.set; assert_equal_vector vec(0, 0, 0), v
|
@@ -54,7 +51,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
54
51
|
v = v0.dup; v.set point(1, 2, 3); assert_equal_vector vec(1, 2, 3), v
|
55
52
|
end
|
56
53
|
|
57
|
-
def test_dup
|
54
|
+
def test_dup()
|
58
55
|
v1 = vec 1, 2, 3
|
59
56
|
assert_equal_vector vec(1, 2, 3), v1
|
60
57
|
|
@@ -67,7 +64,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
67
64
|
assert_equal_vector vec(1, 2, 3), v2
|
68
65
|
end
|
69
66
|
|
70
|
-
def test_copy
|
67
|
+
def test_copy()
|
71
68
|
v1 = vec 1, 2, 3
|
72
69
|
assert_equal_vector vec(1, 2, 3), v1
|
73
70
|
|
@@ -80,7 +77,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
80
77
|
assert_equal_vector vec(1, 2, 3), v2
|
81
78
|
end
|
82
79
|
|
83
|
-
def test_xyz
|
80
|
+
def test_xyz()
|
84
81
|
v = vec 1, 2, 3
|
85
82
|
assert_equal_vector vec(1, 2, 3), v
|
86
83
|
assert_equal [1, 2, 3], [v.x, v.y, v.z]
|
@@ -95,11 +92,11 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
95
92
|
assert_equal_vector vec(7, 8, 9), v
|
96
93
|
end
|
97
94
|
|
98
|
-
def test_array
|
95
|
+
def test_array()
|
99
96
|
assert_equal [1, 2, 3], vec(1, 2, 3).array
|
100
97
|
end
|
101
98
|
|
102
|
-
def test_add
|
99
|
+
def test_add()
|
103
100
|
v = vec 1, 2, 3
|
104
101
|
v.add 4, 5, 6
|
105
102
|
assert_equal_vector vec(5, 7, 9), v
|
@@ -118,7 +115,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
118
115
|
assert_equal_vector vec(5, 7, 9), vec(1, 2, 3).add(point(4, 5, 6))
|
119
116
|
end
|
120
117
|
|
121
|
-
def test_sub
|
118
|
+
def test_sub()
|
122
119
|
v = vec 9, 8, 7
|
123
120
|
v.sub 1, 2, 3
|
124
121
|
assert_equal_vector vec(8, 6, 4), v
|
@@ -137,19 +134,19 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
137
134
|
assert_equal_vector vec(8, 6, 4), vec(9, 8, 7).sub(point(1, 2, 3))
|
138
135
|
end
|
139
136
|
|
140
|
-
def test_mult
|
137
|
+
def test_mult()
|
141
138
|
v = vec 1, 2, 3
|
142
139
|
v.mult 2
|
143
140
|
assert_equal_vector vec(2, 4, 6), v
|
144
141
|
end
|
145
142
|
|
146
|
-
def test_div
|
143
|
+
def test_div()
|
147
144
|
v = vec 2, 4, 6
|
148
145
|
v.div 2
|
149
146
|
assert_equal_vector vec(1, 2, 3), v
|
150
147
|
end
|
151
148
|
|
152
|
-
def test_op_add
|
149
|
+
def test_op_add()
|
153
150
|
v1 = vec 1, 2, 3
|
154
151
|
v2 = vec 4, 5, 6
|
155
152
|
assert_equal_vector vec(5, 7, 9), v1 + v2
|
@@ -167,7 +164,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
167
164
|
assert_equal_vector vec(5, 7, 9), vec(1, 2, 3) + point(4, 5, 6)
|
168
165
|
end
|
169
166
|
|
170
|
-
def test_op_sub
|
167
|
+
def test_op_sub()
|
171
168
|
v1 = vec 9, 8, 7
|
172
169
|
v2 = vec 1, 2, 3
|
173
170
|
assert_equal_vector vec(8, 6, 4), v1 - v2
|
@@ -185,19 +182,19 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
185
182
|
assert_equal_vector vec(8, 6, 4), vec(9, 8, 7) - point(1, 2, 3)
|
186
183
|
end
|
187
184
|
|
188
|
-
def test_op_mult
|
185
|
+
def test_op_mult()
|
189
186
|
v = vec 1, 2, 3
|
190
187
|
assert_equal_vector vec(2, 4, 6), v * 2
|
191
188
|
assert_equal_vector vec(1, 2, 3), v
|
192
189
|
end
|
193
190
|
|
194
|
-
def test_op_div
|
191
|
+
def test_op_div()
|
195
192
|
v = vec 2, 4, 6
|
196
193
|
assert_equal_vector vec(1, 2, 3), v / 2
|
197
194
|
assert_equal_vector vec(2, 4, 6), v
|
198
195
|
end
|
199
196
|
|
200
|
-
def test_fun_add
|
197
|
+
def test_fun_add()
|
201
198
|
v1 = vec 1, 2, 3
|
202
199
|
v2 = vec 4, 5, 6
|
203
200
|
result = vec
|
@@ -207,7 +204,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
207
204
|
assert_equal_vector vec(5, 7, 9), result
|
208
205
|
end
|
209
206
|
|
210
|
-
def test_fun_sub
|
207
|
+
def test_fun_sub()
|
211
208
|
v1 = vec 9, 8, 7
|
212
209
|
v2 = vec 1, 2, 3
|
213
210
|
result = vec
|
@@ -217,7 +214,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
217
214
|
assert_equal_vector vec(8, 6, 4), result
|
218
215
|
end
|
219
216
|
|
220
|
-
def test_fun_mult
|
217
|
+
def test_fun_mult()
|
221
218
|
v1 = vec 1, 2, 3
|
222
219
|
result = vec
|
223
220
|
assert_equal_vector vec(2, 4, 6), V.mult(v1, 2, result)
|
@@ -225,7 +222,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
225
222
|
assert_equal_vector vec(2, 4, 6), result
|
226
223
|
end
|
227
224
|
|
228
|
-
def test_fun_div
|
225
|
+
def test_fun_div()
|
229
226
|
v1 = vec 2, 4, 6
|
230
227
|
result = vec
|
231
228
|
assert_equal_vector vec(1, 2, 3), V.div(v1, 2, result)
|
@@ -233,17 +230,17 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
233
230
|
assert_equal_vector vec(1, 2, 3), result
|
234
231
|
end
|
235
232
|
|
236
|
-
def test_mag
|
233
|
+
def test_mag()
|
237
234
|
assert_in_delta M.sqrt(5), vec(1, 2) .mag, 0.000001
|
238
235
|
assert_in_delta M.sqrt(14), vec(1, 2, 3).mag, 0.000001
|
239
236
|
end
|
240
237
|
|
241
|
-
def test_magSq
|
238
|
+
def test_magSq()
|
242
239
|
assert_equal 5, vec(1, 2) .magSq
|
243
240
|
assert_equal 14, vec(1, 2, 3).magSq
|
244
241
|
end
|
245
242
|
|
246
|
-
def test_setMag
|
243
|
+
def test_setMag()
|
247
244
|
v = vec 3, 4, 0
|
248
245
|
assert_equal_vector vec(6, 8, 0), v.setMag(10)
|
249
246
|
assert_equal_vector vec(6, 8, 0), v
|
@@ -255,7 +252,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
255
252
|
assert_equal_vector vec(6, 8, 0), result
|
256
253
|
end
|
257
254
|
|
258
|
-
def test_normalize
|
255
|
+
def test_normalize()
|
259
256
|
v = vec 1, 2, 3
|
260
257
|
normal = v / v.mag
|
261
258
|
assert_equal_vector normal, v.normalize
|
@@ -268,7 +265,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
268
265
|
assert_equal_vector normal, result
|
269
266
|
end
|
270
267
|
|
271
|
-
def test_limit
|
268
|
+
def test_limit()
|
272
269
|
v = vec 1, 2, 3
|
273
270
|
assert_in_delta 1, v.limit(1).mag, 0.000001
|
274
271
|
assert_in_delta 1, v .mag, 0.000001
|
@@ -279,7 +276,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
279
276
|
assert_in_delta vec(1, 2, 3).mag, vec(1, 2, 3).limit(4).mag, 0.000001
|
280
277
|
end
|
281
278
|
|
282
|
-
def test_dist
|
279
|
+
def test_dist()
|
283
280
|
v1 = vec 1, 2, 3
|
284
281
|
v2 = vec 4, 5, 6
|
285
282
|
|
@@ -292,7 +289,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
292
289
|
assert_equal_vector vec(4, 5, 6), v2
|
293
290
|
end
|
294
291
|
|
295
|
-
def test_dot
|
292
|
+
def test_dot()
|
296
293
|
v1 = vec 1, 2, 3
|
297
294
|
v2 = vec 4, 5, 6
|
298
295
|
|
@@ -308,7 +305,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
308
305
|
assert_equal_vector vec(4, 5, 6), v2
|
309
306
|
end
|
310
307
|
|
311
|
-
def test_cross
|
308
|
+
def test_cross()
|
312
309
|
v1 = vec 1, 0, 0
|
313
310
|
v2 = vec 0, 1, 0
|
314
311
|
|
@@ -328,9 +325,9 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
328
325
|
assert_equal_vector vec(0, 0, 1), result
|
329
326
|
end
|
330
327
|
|
331
|
-
def test_rotate
|
328
|
+
def test_rotate()
|
332
329
|
angle = PI * 2 * 0.1
|
333
|
-
context = Object.new.tap {|o| def o.toAngle__
|
330
|
+
context = Object.new.tap {|o| def o.toAngle__(a); a * 2 * P::RAD2DEG__; end}
|
334
331
|
|
335
332
|
v = vec 1, 0, 0
|
336
333
|
assert_equal_vector vec(M.cos(angle), M.sin(angle), 0), v.rotate(angle)
|
@@ -340,7 +337,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
340
337
|
assert_equal_vector vec(M.cos(angle * 2), M.sin(angle * 2), 0), v.rotate(angle)
|
341
338
|
end
|
342
339
|
|
343
|
-
def test_fromAngle
|
340
|
+
def test_fromAngle()
|
344
341
|
angle = PI * 2 * 0.1
|
345
342
|
result = vec
|
346
343
|
assert_equal_vector vec(M.cos(angle), M.sin(angle), 0), V.fromAngle(angle)
|
@@ -348,25 +345,25 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
348
345
|
assert_equal_vector vec(M.cos(angle), M.sin(angle), 0), result
|
349
346
|
end
|
350
347
|
|
351
|
-
def test_heading
|
348
|
+
def test_heading()
|
352
349
|
angle = PI * 1 * 0.1
|
353
|
-
assert_in_delta
|
354
|
-
assert_in_delta
|
350
|
+
assert_in_delta( angle, V.fromAngle( angle).heading, 0.000001)
|
351
|
+
assert_in_delta(-angle, V.fromAngle(-angle).heading, 0.000001)
|
355
352
|
end
|
356
353
|
|
357
|
-
def test_angleBetween
|
354
|
+
def test_angleBetween()
|
358
355
|
v1 = V.fromAngle PI * 0.25
|
359
356
|
v2 = V.fromAngle PI * 0.75
|
360
357
|
assert_in_delta PI / 2, V.angleBetween(v1, v2), 0.000001
|
361
358
|
end
|
362
359
|
|
363
|
-
def test_lerp
|
360
|
+
def test_lerp()
|
364
361
|
assert_equal_vector vec(0.5, 0.5, 0.5), vec(0, 0, 0).lerp(vec(1, 1, 1), 0.5)
|
365
362
|
assert_equal_vector vec(0.5, 0.5, 0.5), vec(0, 0, 0).lerp( 1, 1, 1, 0.5)
|
366
363
|
assert_equal_vector vec(0.5, 0.5, 0.5), V.lerp(vec(0, 0, 0), vec(1, 1, 1), 0.5)
|
367
364
|
end
|
368
365
|
|
369
|
-
def test_random2D
|
366
|
+
def test_random2D()
|
370
367
|
v1 = V.random2D
|
371
368
|
v2 = V.random2D
|
372
369
|
assert v1.x != 0
|
@@ -380,7 +377,7 @@ class TestProcessingVector < Test::Unit::TestCase
|
|
380
377
|
assert_in_delta 1, v2.mag, 0.000001
|
381
378
|
end
|
382
379
|
|
383
|
-
def test_random3D
|
380
|
+
def test_random3D()
|
384
381
|
v1 = V.random3D
|
385
382
|
v2 = V.random3D
|
386
383
|
assert v1.x != 0
|