processing 0.5.33 → 0.5.34
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.md +7 -1
- data/VERSION +1 -1
- data/lib/processing/context.rb +129 -0
- data/lib/processing/font.rb +5 -0
- data/lib/processing/graphics.rb +9 -0
- data/lib/processing/graphics_context.rb +431 -1
- data/lib/processing/image.rb +91 -0
- data/lib/processing/shader.rb +29 -16
- data/lib/processing/shape.rb +258 -10
- data/lib/processing/vector.rb +126 -0
- data/lib/processing/window.rb +2 -0
- metadata +2 -2
data/lib/processing/vector.rb
CHANGED
@@ -3,6 +3,9 @@ module Processing
|
|
3
3
|
|
4
4
|
# Vector class.
|
5
5
|
#
|
6
|
+
# @see https://processing.org/reference/PVector.html
|
7
|
+
# @see https://p5js.org/reference/#/p5.Vector
|
8
|
+
#
|
6
9
|
class Vector
|
7
10
|
|
8
11
|
include Comparable
|
@@ -22,6 +25,9 @@ module Processing
|
|
22
25
|
# @param v [Vector] vector object to copy
|
23
26
|
# @param a [Array] array like [x, y, z]
|
24
27
|
#
|
28
|
+
# @see https://processing.org/reference/PVector.html
|
29
|
+
# @see https://p5js.org/reference/#/p5.Vector
|
30
|
+
#
|
25
31
|
def initialize(x = 0, y = 0, z = 0, context: nil)
|
26
32
|
@point = case x
|
27
33
|
when Rays::Point then x.dup
|
@@ -42,6 +48,9 @@ module Processing
|
|
42
48
|
#
|
43
49
|
# @return [Vector] duplicated vector object
|
44
50
|
#
|
51
|
+
# @see https://processing.org/reference/PVector_copy_.html
|
52
|
+
# @see https://p5js.org/reference/#/p5.Vector/copy
|
53
|
+
#
|
45
54
|
alias copy dup
|
46
55
|
|
47
56
|
# Sets x, y and z.
|
@@ -60,6 +69,9 @@ module Processing
|
|
60
69
|
#
|
61
70
|
# @return [nil] nil
|
62
71
|
#
|
72
|
+
# @see https://processing.org/reference/PVector_set_.html
|
73
|
+
# @see https://p5js.org/reference/#/p5.Vector/set
|
74
|
+
#
|
63
75
|
def set(*args)
|
64
76
|
initialize(*args)
|
65
77
|
self
|
@@ -69,6 +81,9 @@ module Processing
|
|
69
81
|
#
|
70
82
|
# @return [Numeric] x value of vector
|
71
83
|
#
|
84
|
+
# @see https://processing.org/reference/PVector_x.html
|
85
|
+
# @see https://p5js.org/reference/#/p5.Vector/x
|
86
|
+
#
|
72
87
|
def x()
|
73
88
|
@point.x
|
74
89
|
end
|
@@ -77,6 +92,9 @@ module Processing
|
|
77
92
|
#
|
78
93
|
# @return [Numeric] y value of vector
|
79
94
|
#
|
95
|
+
# @see https://processing.org/reference/PVector_y.html
|
96
|
+
# @see https://p5js.org/reference/#/p5.Vector/y
|
97
|
+
#
|
80
98
|
def y()
|
81
99
|
@point.y
|
82
100
|
end
|
@@ -85,6 +103,9 @@ module Processing
|
|
85
103
|
#
|
86
104
|
# @return [Numeric] z value of vector
|
87
105
|
#
|
106
|
+
# @see https://processing.org/reference/PVector_z.html
|
107
|
+
# @see https://p5js.org/reference/#/p5.Vector/z
|
108
|
+
#
|
88
109
|
def z()
|
89
110
|
@point.z
|
90
111
|
end
|
@@ -93,6 +114,9 @@ module Processing
|
|
93
114
|
#
|
94
115
|
# @return [Numeric] x value of vector
|
95
116
|
#
|
117
|
+
# @see https://processing.org/reference/PVector_x.html
|
118
|
+
# @see https://p5js.org/reference/#/p5.Vector/x
|
119
|
+
#
|
96
120
|
def x=(x)
|
97
121
|
@point.x = x
|
98
122
|
end
|
@@ -101,6 +125,9 @@ module Processing
|
|
101
125
|
#
|
102
126
|
# @return [Numeric] y value of vector
|
103
127
|
#
|
128
|
+
# @see https://processing.org/reference/PVector_y.html
|
129
|
+
# @see https://p5js.org/reference/#/p5.Vector/y
|
130
|
+
#
|
104
131
|
def y=(y)
|
105
132
|
@point.y = y
|
106
133
|
end
|
@@ -109,6 +136,9 @@ module Processing
|
|
109
136
|
#
|
110
137
|
# @return [Numeric] z value of vector
|
111
138
|
#
|
139
|
+
# @see https://processing.org/reference/PVector_z.html
|
140
|
+
# @see https://p5js.org/reference/#/p5.Vector/z
|
141
|
+
#
|
112
142
|
def z=(z)
|
113
143
|
@point.z = z
|
114
144
|
end
|
@@ -127,6 +157,9 @@ module Processing
|
|
127
157
|
#
|
128
158
|
# @return [Vector] interporated vector
|
129
159
|
#
|
160
|
+
# @see https://processing.org/reference/PVector_lerp_.html
|
161
|
+
# @see https://p5js.org/reference/#/p5.Vector/lerp
|
162
|
+
#
|
130
163
|
def lerp(*args, amount)
|
131
164
|
v = toVector__(*args)
|
132
165
|
self.x = x + (v.x - x) * amount
|
@@ -143,6 +176,9 @@ module Processing
|
|
143
176
|
#
|
144
177
|
# @return [Vector] interporated vector
|
145
178
|
#
|
179
|
+
# @see https://processing.org/reference/PVector_lerp_.html
|
180
|
+
# @see https://p5js.org/reference/#/p5.Vector/lerp
|
181
|
+
#
|
146
182
|
def self.lerp(v1, v2, amount)
|
147
183
|
v1.dup.lerp v2, amount
|
148
184
|
end
|
@@ -153,6 +189,9 @@ module Processing
|
|
153
189
|
#
|
154
190
|
# @return [Array] array of x, y, z
|
155
191
|
#
|
192
|
+
# @see https://processing.org/reference/PVector_array_.html
|
193
|
+
# @see https://p5js.org/reference/#/p5.Vector/array
|
194
|
+
#
|
156
195
|
def array(n = 3)
|
157
196
|
@point.to_a n
|
158
197
|
end
|
@@ -172,6 +211,9 @@ module Processing
|
|
172
211
|
#
|
173
212
|
# @return [Vector] added vector
|
174
213
|
#
|
214
|
+
# @see https://processing.org/reference/PVector_add_.html
|
215
|
+
# @see https://p5js.org/reference/#/p5.Vector/add
|
216
|
+
#
|
175
217
|
def add(*args)
|
176
218
|
@point += toVector__(*args).getInternal__
|
177
219
|
self
|
@@ -190,6 +232,9 @@ module Processing
|
|
190
232
|
#
|
191
233
|
# @return [Vector] subtracted vector
|
192
234
|
#
|
235
|
+
# @see https://processing.org/reference/PVector_sub_.html
|
236
|
+
# @see https://p5js.org/reference/#/p5.Vector/sub
|
237
|
+
#
|
193
238
|
def sub(*args)
|
194
239
|
@point -= toVector__(*args).getInternal__
|
195
240
|
self
|
@@ -201,6 +246,9 @@ module Processing
|
|
201
246
|
#
|
202
247
|
# @return [Vector] multiplied vector
|
203
248
|
#
|
249
|
+
# @see https://processing.org/reference/PVector_mult_.html
|
250
|
+
# @see https://p5js.org/reference/#/p5.Vector/mult
|
251
|
+
#
|
204
252
|
def mult(num)
|
205
253
|
@point *= num
|
206
254
|
self
|
@@ -212,6 +260,9 @@ module Processing
|
|
212
260
|
#
|
213
261
|
# @return [Vector] divided vector
|
214
262
|
#
|
263
|
+
# @see https://processing.org/reference/PVector_div_.html
|
264
|
+
# @see https://p5js.org/reference/#/p5.Vector/div
|
265
|
+
#
|
215
266
|
def div(num)
|
216
267
|
@point /= num
|
217
268
|
self
|
@@ -223,6 +274,9 @@ module Processing
|
|
223
274
|
#
|
224
275
|
# @return [Vector] added vector
|
225
276
|
#
|
277
|
+
# @see https://processing.org/reference/PVector_add_.html
|
278
|
+
# @see https://p5js.org/reference/#/p5.Vector/add
|
279
|
+
#
|
226
280
|
def +(v)
|
227
281
|
dup.add v
|
228
282
|
end
|
@@ -233,6 +287,9 @@ module Processing
|
|
233
287
|
#
|
234
288
|
# @return [Vector] subtracted vector
|
235
289
|
#
|
290
|
+
# @see https://processing.org/reference/PVector_sub_.html
|
291
|
+
# @see https://p5js.org/reference/#/p5.Vector/sub
|
292
|
+
#
|
236
293
|
def -(v)
|
237
294
|
dup.sub v
|
238
295
|
end
|
@@ -243,6 +300,9 @@ module Processing
|
|
243
300
|
#
|
244
301
|
# @return [Vector] multiplied vector
|
245
302
|
#
|
303
|
+
# @see https://processing.org/reference/PVector_mult_.html
|
304
|
+
# @see https://p5js.org/reference/#/p5.Vector/mult
|
305
|
+
#
|
246
306
|
def *(num)
|
247
307
|
dup.mult num
|
248
308
|
end
|
@@ -253,6 +313,9 @@ module Processing
|
|
253
313
|
#
|
254
314
|
# @return [Vector] divided vector
|
255
315
|
#
|
316
|
+
# @see https://processing.org/reference/PVector_div_.html
|
317
|
+
# @see https://p5js.org/reference/#/p5.Vector/div
|
318
|
+
#
|
256
319
|
def /(num)
|
257
320
|
dup.div num
|
258
321
|
end
|
@@ -268,6 +331,9 @@ module Processing
|
|
268
331
|
#
|
269
332
|
# @return [Vector] added vector
|
270
333
|
#
|
334
|
+
# @see https://processing.org/reference/PVector_add_.html
|
335
|
+
# @see https://p5js.org/reference/#/p5.Vector/add
|
336
|
+
#
|
271
337
|
def self.add(v1, v2, target = nil)
|
272
338
|
v = v1 + v2
|
273
339
|
target.set v if self === target
|
@@ -285,6 +351,9 @@ module Processing
|
|
285
351
|
#
|
286
352
|
# @return [Vector] subtracted vector
|
287
353
|
#
|
354
|
+
# @see https://processing.org/reference/PVector_sub_.html
|
355
|
+
# @see https://p5js.org/reference/#/p5.Vector/sub
|
356
|
+
#
|
288
357
|
def self.sub(v1, v2, target = nil)
|
289
358
|
v = v1 - v2
|
290
359
|
target.set v if self === target
|
@@ -302,6 +371,9 @@ module Processing
|
|
302
371
|
#
|
303
372
|
# @return [Vector] multiplied vector
|
304
373
|
#
|
374
|
+
# @see https://processing.org/reference/PVector_mult_.html
|
375
|
+
# @see https://p5js.org/reference/#/p5.Vector/mult
|
376
|
+
#
|
305
377
|
def self.mult(v1, num, target = nil)
|
306
378
|
v = v1 * num
|
307
379
|
target.set v if self === target
|
@@ -319,6 +391,9 @@ module Processing
|
|
319
391
|
#
|
320
392
|
# @return [Vector] divided vector
|
321
393
|
#
|
394
|
+
# @see https://processing.org/reference/PVector_div_.html
|
395
|
+
# @see https://p5js.org/reference/#/p5.Vector/div
|
396
|
+
#
|
322
397
|
def self.div(v1, num, target = nil)
|
323
398
|
v = v1 / num
|
324
399
|
target.set v if self === target
|
@@ -329,6 +404,9 @@ module Processing
|
|
329
404
|
#
|
330
405
|
# @return [Numeric] length
|
331
406
|
#
|
407
|
+
# @see https://processing.org/reference/PVector_mag_.html
|
408
|
+
# @see https://p5js.org/reference/#/p5.Vector/mag
|
409
|
+
#
|
332
410
|
def mag()
|
333
411
|
@point.length
|
334
412
|
end
|
@@ -337,6 +415,9 @@ module Processing
|
|
337
415
|
#
|
338
416
|
# @return [Numeric] squared length
|
339
417
|
#
|
418
|
+
# @see https://processing.org/reference/PVector_magSq_.html
|
419
|
+
# @see https://p5js.org/reference/#/p5.Vector/magSq
|
420
|
+
#
|
340
421
|
def magSq()
|
341
422
|
Rays::Point::dot(@point, @point)
|
342
423
|
end
|
@@ -351,6 +432,9 @@ module Processing
|
|
351
432
|
#
|
352
433
|
# @return [Vector] vector with new length
|
353
434
|
#
|
435
|
+
# @see https://processing.org/reference/PVector_setMag_.html
|
436
|
+
# @see https://p5js.org/reference/#/p5.Vector/setMag
|
437
|
+
#
|
354
438
|
def setMag(target = nil, len)
|
355
439
|
(target || self).set @point.normal * len
|
356
440
|
end
|
@@ -361,6 +445,9 @@ module Processing
|
|
361
445
|
#
|
362
446
|
# @return [Vector] normalized vector
|
363
447
|
#
|
448
|
+
# @see https://processing.org/reference/PVector_normalize_.html
|
449
|
+
# @see https://p5js.org/reference/#/p5.Vector/normalize
|
450
|
+
#
|
364
451
|
def normalize(target = nil)
|
365
452
|
(target || self).set @point.normal
|
366
453
|
end
|
@@ -371,6 +458,9 @@ module Processing
|
|
371
458
|
#
|
372
459
|
# @return [Vector] new vector
|
373
460
|
#
|
461
|
+
# @see https://processing.org/reference/PVector_limit_.html
|
462
|
+
# @see https://p5js.org/reference/#/p5.Vector/limit
|
463
|
+
#
|
374
464
|
def limit(max)
|
375
465
|
setMag max if magSq > max ** 2
|
376
466
|
self
|
@@ -382,6 +472,9 @@ module Processing
|
|
382
472
|
#
|
383
473
|
# @return [Numeric] the distance
|
384
474
|
#
|
475
|
+
# @see https://processing.org/reference/PVector_dist_.html
|
476
|
+
# @see https://p5js.org/reference/#/p5.Vector/dist
|
477
|
+
#
|
385
478
|
def dist(v)
|
386
479
|
(self - v).mag
|
387
480
|
end
|
@@ -393,6 +486,9 @@ module Processing
|
|
393
486
|
#
|
394
487
|
# @return [Numeric] the distance
|
395
488
|
#
|
489
|
+
# @see https://processing.org/reference/PVector_dist_.html
|
490
|
+
# @see https://p5js.org/reference/#/p5.Vector/dist
|
491
|
+
#
|
396
492
|
def self.dist(v1, v2)
|
397
493
|
v1.dist v2
|
398
494
|
end
|
@@ -410,6 +506,9 @@ module Processing
|
|
410
506
|
#
|
411
507
|
# @return [Numeric] result of dot product
|
412
508
|
#
|
509
|
+
# @see https://processing.org/reference/PVector_dot_.html
|
510
|
+
# @see https://p5js.org/reference/#/p5.Vector/dot
|
511
|
+
#
|
413
512
|
def dot(*args)
|
414
513
|
Rays::Point::dot getInternal__, toVector__(*args).getInternal__
|
415
514
|
end
|
@@ -421,6 +520,9 @@ module Processing
|
|
421
520
|
#
|
422
521
|
# @return [Numeric] result of dot product
|
423
522
|
#
|
523
|
+
# @see https://processing.org/reference/PVector_dot_.html
|
524
|
+
# @see https://p5js.org/reference/#/p5.Vector/dot
|
525
|
+
#
|
424
526
|
def self.dot(v1, v2)
|
425
527
|
v1.dot v2
|
426
528
|
end
|
@@ -438,6 +540,9 @@ module Processing
|
|
438
540
|
#
|
439
541
|
# @return [Numeric] result of cross product
|
440
542
|
#
|
543
|
+
# @see https://processing.org/reference/PVector_cross_.html
|
544
|
+
# @see https://p5js.org/reference/#/p5.Vector/cross
|
545
|
+
#
|
441
546
|
def cross(a, *rest)
|
442
547
|
target = self.class === rest.last ? rest.pop : nil
|
443
548
|
v = self.class.new Rays::Point::cross getInternal__, toVector__(a, *rest).getInternal__
|
@@ -452,6 +557,9 @@ module Processing
|
|
452
557
|
#
|
453
558
|
# @return [Numeric] result of cross product
|
454
559
|
#
|
560
|
+
# @see https://processing.org/reference/PVector_cross_.html
|
561
|
+
# @see https://p5js.org/reference/#/p5.Vector/cross
|
562
|
+
#
|
455
563
|
def self.cross(v1, v2, target = nil)
|
456
564
|
v1.cross v2, target
|
457
565
|
end
|
@@ -462,6 +570,9 @@ module Processing
|
|
462
570
|
#
|
463
571
|
# @return [Vector] rotated this object
|
464
572
|
#
|
573
|
+
# @see https://processing.org/reference/PVector_rotate_.html
|
574
|
+
# @see https://p5js.org/reference/#/p5.Vector/rotate
|
575
|
+
#
|
465
576
|
def rotate(angle)
|
466
577
|
deg = @context ?
|
467
578
|
@context.toDegrees__(angle) : angle * GraphicsContext::RAD2DEG__
|
@@ -473,6 +584,9 @@ module Processing
|
|
473
584
|
#
|
474
585
|
# @return [Numeric] the angle in radians
|
475
586
|
#
|
587
|
+
# @see https://processing.org/reference/PVector_heading_.html
|
588
|
+
# @see https://p5js.org/reference/#/p5.Vector/heading
|
589
|
+
#
|
476
590
|
def heading()
|
477
591
|
Math.atan2 y, x
|
478
592
|
end
|
@@ -484,6 +598,9 @@ module Processing
|
|
484
598
|
#
|
485
599
|
# @return [Vector] rotated vector
|
486
600
|
#
|
601
|
+
# @see https://processing.org/reference/PVector_fromAngle_.html
|
602
|
+
# @see https://p5js.org/reference/#/p5.Vector/fromAngle
|
603
|
+
#
|
487
604
|
def self.fromAngle(angle, target = nil)
|
488
605
|
v = self.new(1, 0, 0).rotate(angle)
|
489
606
|
target.set v if target
|
@@ -497,6 +614,9 @@ module Processing
|
|
497
614
|
#
|
498
615
|
# @return [Numeric] angle in radians
|
499
616
|
#
|
617
|
+
# @see https://processing.org/reference/PVector_angleBetween_.html
|
618
|
+
# @see https://p5js.org/reference/#/p5.Vector/angleBetween
|
619
|
+
#
|
500
620
|
def self.angleBetween(v1, v2)
|
501
621
|
x1, y1, z1 = v1.array
|
502
622
|
x2, y2, z2 = v2.array
|
@@ -514,6 +634,9 @@ module Processing
|
|
514
634
|
#
|
515
635
|
# @return [Vector] a random vector
|
516
636
|
#
|
637
|
+
# @see https://processing.org/reference/PVector_random2D_.html
|
638
|
+
# @see https://p5js.org/reference/#/p5.Vector/random2D
|
639
|
+
#
|
517
640
|
def self.random2D(target = nil)
|
518
641
|
v = self.new(1, 0, 0)
|
519
642
|
v.getInternal__.rotate! rand 0.0...360.0
|
@@ -527,6 +650,9 @@ module Processing
|
|
527
650
|
#
|
528
651
|
# @return [Vector] a random vector
|
529
652
|
#
|
653
|
+
# @see https://processing.org/reference/PVector_random3D_.html
|
654
|
+
# @see https://p5js.org/reference/#/p5.Vector/random3D
|
655
|
+
#
|
530
656
|
def self.random3D(target = nil)
|
531
657
|
angle = rand 0.0...(Math::PI * 2)
|
532
658
|
z = rand(-1.0..1.0)
|
data/lib/processing/window.rb
CHANGED
@@ -212,6 +212,7 @@ module Processing
|
|
212
212
|
end# Window
|
213
213
|
|
214
214
|
|
215
|
+
# @private
|
215
216
|
class Window::Canvas
|
216
217
|
|
217
218
|
def initialize(window, width, height)
|
@@ -297,6 +298,7 @@ module Processing
|
|
297
298
|
end# Window::Canvas
|
298
299
|
|
299
300
|
|
301
|
+
# @private
|
300
302
|
class Window::CanvasView < Reflex::View
|
301
303
|
|
302
304
|
def on_update(e)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: processing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|