snow-math 1.6.0 → 1.6.1
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/ext/snow-math/snow-math.c +218 -0
- data/lib/snow-math/mat3.rb +8 -3
- data/lib/snow-math/mat4.rb +7 -2
- data/lib/snow-math/quat.rb +10 -0
- data/lib/snow-math/vec2.rb +7 -0
- data/lib/snow-math/vec3.rb +9 -0
- data/lib/snow-math/vec4.rb +10 -0
- data/lib/snow-math/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59c66cdb4331e39915f31821b06050210de0101b
|
4
|
+
data.tar.gz: 38339703c8a3dc316120129c559b5d5fe096c1a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 848fb1b812af454cb1775db23d1cdd59f071c8f4f8dfbce4eb2315e760445a55ad6f02bb74443d25c6de9a521fdae2db837ca0087e2a6f8314211783ccb8b274
|
7
|
+
data.tar.gz: 3236a1958069e2d11086fcc688e30c13c8b141a2b034f24a085b0f1142a2f72bc1c680b00760b129a209d364ad54282f1812ff841a2091ccd17c2aa512862ac9
|
data/ext/snow-math/snow-math.c
CHANGED
@@ -72,6 +72,7 @@ See COPYING for license information
|
|
72
72
|
#endif
|
73
73
|
#if BUILD_ARRAY_TYPE
|
74
74
|
|
75
|
+
static ID kRB_NAME_FREEZE;
|
75
76
|
static ID kRB_IVAR_MATHARRAY_LENGTH;
|
76
77
|
static ID kRB_IVAR_MATHARRAY_CACHE;
|
77
78
|
static ID kRB_IVAR_MATHARRAY_SOURCE;
|
@@ -187,6 +188,37 @@ static VALUE sm_vec2_array_new(VALUE sm_self, VALUE sm_length_or_copy)
|
|
187
188
|
|
188
189
|
|
189
190
|
|
191
|
+
/*
|
192
|
+
* Freezes the array and its elements.
|
193
|
+
*
|
194
|
+
* call-seq: freeze -> self
|
195
|
+
*/
|
196
|
+
static VALUE sm_vec2_array_freeze(VALUE sm_self)
|
197
|
+
{
|
198
|
+
VALUE sm_cache;
|
199
|
+
VALUE sm_cached_entry;
|
200
|
+
long length;
|
201
|
+
long index;
|
202
|
+
|
203
|
+
if (OBJ_FROZEN(sm_self)) {
|
204
|
+
return sm_self;
|
205
|
+
}
|
206
|
+
|
207
|
+
sm_cache = rb_ivar_get(sm_self, kRB_IVAR_MATHARRAY_CACHE);
|
208
|
+
length = RARRAY_LEN(sm_cache);
|
209
|
+
|
210
|
+
for (index = 0; index < length; ++index) {
|
211
|
+
sm_cached_entry = rb_ary_entry(sm_cache, index);
|
212
|
+
if (RTEST(sm_cached_entry) && !OBJ_FROZEN(sm_cached_entry)) {
|
213
|
+
rb_funcall2(sm_cached_entry, kRB_NAME_FREEZE, 0, 0);
|
214
|
+
}
|
215
|
+
}
|
216
|
+
|
217
|
+
return rb_call_super(0, 0);
|
218
|
+
}
|
219
|
+
|
220
|
+
|
221
|
+
|
190
222
|
/*
|
191
223
|
* Resizes the array to new_length and returns self.
|
192
224
|
*
|
@@ -275,6 +307,10 @@ static VALUE sm_vec2_array_fetch(VALUE sm_self, VALUE sm_index)
|
|
275
307
|
rb_ary_store(sm_cache, (long)index, sm_inner);
|
276
308
|
}
|
277
309
|
|
310
|
+
if (OBJ_FROZEN(sm_self)) {
|
311
|
+
rb_funcall2(sm_inner, kRB_NAME_FREEZE, 0, 0);
|
312
|
+
}
|
313
|
+
|
278
314
|
return sm_inner;
|
279
315
|
}
|
280
316
|
|
@@ -382,6 +418,37 @@ static VALUE sm_vec3_array_new(VALUE sm_self, VALUE sm_length_or_copy)
|
|
382
418
|
|
383
419
|
|
384
420
|
|
421
|
+
/*
|
422
|
+
* Freezes the array and its elements.
|
423
|
+
*
|
424
|
+
* call-seq: freeze -> self
|
425
|
+
*/
|
426
|
+
static VALUE sm_vec3_array_freeze(VALUE sm_self)
|
427
|
+
{
|
428
|
+
VALUE sm_cache;
|
429
|
+
VALUE sm_cached_entry;
|
430
|
+
long length;
|
431
|
+
long index;
|
432
|
+
|
433
|
+
if (OBJ_FROZEN(sm_self)) {
|
434
|
+
return sm_self;
|
435
|
+
}
|
436
|
+
|
437
|
+
sm_cache = rb_ivar_get(sm_self, kRB_IVAR_MATHARRAY_CACHE);
|
438
|
+
length = RARRAY_LEN(sm_cache);
|
439
|
+
|
440
|
+
for (index = 0; index < length; ++index) {
|
441
|
+
sm_cached_entry = rb_ary_entry(sm_cache, index);
|
442
|
+
if (RTEST(sm_cached_entry)) {
|
443
|
+
rb_funcall2(sm_cached_entry, kRB_NAME_FREEZE, 0, 0);
|
444
|
+
}
|
445
|
+
}
|
446
|
+
|
447
|
+
return rb_call_super(0, 0);
|
448
|
+
}
|
449
|
+
|
450
|
+
|
451
|
+
|
385
452
|
/*
|
386
453
|
* Resizes the array to new_length and returns self.
|
387
454
|
*
|
@@ -470,6 +537,10 @@ static VALUE sm_vec3_array_fetch(VALUE sm_self, VALUE sm_index)
|
|
470
537
|
rb_ary_store(sm_cache, (long)index, sm_inner);
|
471
538
|
}
|
472
539
|
|
540
|
+
if (OBJ_FROZEN(sm_self)) {
|
541
|
+
rb_funcall2(sm_inner, kRB_NAME_FREEZE, 0, 0);
|
542
|
+
}
|
543
|
+
|
473
544
|
return sm_inner;
|
474
545
|
}
|
475
546
|
|
@@ -576,6 +647,37 @@ static VALUE sm_vec4_array_new(VALUE sm_self, VALUE sm_length_or_copy)
|
|
576
647
|
|
577
648
|
|
578
649
|
|
650
|
+
/*
|
651
|
+
* Freezes the array and its elements.
|
652
|
+
*
|
653
|
+
* call-seq: freeze -> self
|
654
|
+
*/
|
655
|
+
static VALUE sm_vec4_array_freeze(VALUE sm_self)
|
656
|
+
{
|
657
|
+
VALUE sm_cache;
|
658
|
+
VALUE sm_cached_entry;
|
659
|
+
long length;
|
660
|
+
long index;
|
661
|
+
|
662
|
+
if (OBJ_FROZEN(sm_self)) {
|
663
|
+
return sm_self;
|
664
|
+
}
|
665
|
+
|
666
|
+
sm_cache = rb_ivar_get(sm_self, kRB_IVAR_MATHARRAY_CACHE);
|
667
|
+
length = RARRAY_LEN(sm_cache);
|
668
|
+
|
669
|
+
for (index = 0; index < length; ++index) {
|
670
|
+
sm_cached_entry = rb_ary_entry(sm_cache, index);
|
671
|
+
if (RTEST(sm_cached_entry)) {
|
672
|
+
rb_funcall2(sm_cached_entry, kRB_NAME_FREEZE, 0, 0);
|
673
|
+
}
|
674
|
+
}
|
675
|
+
|
676
|
+
return rb_call_super(0, 0);
|
677
|
+
}
|
678
|
+
|
679
|
+
|
680
|
+
|
579
681
|
/*
|
580
682
|
* Resizes the array to new_length and returns self.
|
581
683
|
*
|
@@ -664,6 +766,10 @@ static VALUE sm_vec4_array_fetch(VALUE sm_self, VALUE sm_index)
|
|
664
766
|
rb_ary_store(sm_cache, (long)index, sm_inner);
|
665
767
|
}
|
666
768
|
|
769
|
+
if (OBJ_FROZEN(sm_self)) {
|
770
|
+
rb_funcall2(sm_inner, kRB_NAME_FREEZE, 0, 0);
|
771
|
+
}
|
772
|
+
|
667
773
|
return sm_inner;
|
668
774
|
}
|
669
775
|
|
@@ -770,6 +876,37 @@ static VALUE sm_quat_array_new(VALUE sm_self, VALUE sm_length_or_copy)
|
|
770
876
|
|
771
877
|
|
772
878
|
|
879
|
+
/*
|
880
|
+
* Freezes the array and its elements.
|
881
|
+
*
|
882
|
+
* call-seq: freeze -> self
|
883
|
+
*/
|
884
|
+
static VALUE sm_quat_array_freeze(VALUE sm_self)
|
885
|
+
{
|
886
|
+
VALUE sm_cache;
|
887
|
+
VALUE sm_cached_entry;
|
888
|
+
long length;
|
889
|
+
long index;
|
890
|
+
|
891
|
+
if (OBJ_FROZEN(sm_self)) {
|
892
|
+
return sm_self;
|
893
|
+
}
|
894
|
+
|
895
|
+
sm_cache = rb_ivar_get(sm_self, kRB_IVAR_MATHARRAY_CACHE);
|
896
|
+
length = RARRAY_LEN(sm_cache);
|
897
|
+
|
898
|
+
for (index = 0; index < length; ++index) {
|
899
|
+
sm_cached_entry = rb_ary_entry(sm_cache, index);
|
900
|
+
if (RTEST(sm_cached_entry)) {
|
901
|
+
rb_funcall2(sm_cached_entry, kRB_NAME_FREEZE, 0, 0);
|
902
|
+
}
|
903
|
+
}
|
904
|
+
|
905
|
+
return rb_call_super(0, 0);
|
906
|
+
}
|
907
|
+
|
908
|
+
|
909
|
+
|
773
910
|
/*
|
774
911
|
* Resizes the array to new_length and returns self.
|
775
912
|
*
|
@@ -858,6 +995,10 @@ static VALUE sm_quat_array_fetch(VALUE sm_self, VALUE sm_index)
|
|
858
995
|
rb_ary_store(sm_cache, (long)index, sm_inner);
|
859
996
|
}
|
860
997
|
|
998
|
+
if (OBJ_FROZEN(sm_self)) {
|
999
|
+
rb_funcall2(sm_inner, kRB_NAME_FREEZE, 0, 0);
|
1000
|
+
}
|
1001
|
+
|
861
1002
|
return sm_inner;
|
862
1003
|
}
|
863
1004
|
|
@@ -964,6 +1105,37 @@ static VALUE sm_mat3_array_new(VALUE sm_self, VALUE sm_length_or_copy)
|
|
964
1105
|
|
965
1106
|
|
966
1107
|
|
1108
|
+
/*
|
1109
|
+
* Freezes the array and its elements.
|
1110
|
+
*
|
1111
|
+
* call-seq: freeze -> self
|
1112
|
+
*/
|
1113
|
+
static VALUE sm_mat3_array_freeze(VALUE sm_self)
|
1114
|
+
{
|
1115
|
+
VALUE sm_cache;
|
1116
|
+
VALUE sm_cached_entry;
|
1117
|
+
long length;
|
1118
|
+
long index;
|
1119
|
+
|
1120
|
+
if (OBJ_FROZEN(sm_self)) {
|
1121
|
+
return sm_self;
|
1122
|
+
}
|
1123
|
+
|
1124
|
+
sm_cache = rb_ivar_get(sm_self, kRB_IVAR_MATHARRAY_CACHE);
|
1125
|
+
length = RARRAY_LEN(sm_cache);
|
1126
|
+
|
1127
|
+
for (index = 0; index < length; ++index) {
|
1128
|
+
sm_cached_entry = rb_ary_entry(sm_cache, index);
|
1129
|
+
if (RTEST(sm_cached_entry)) {
|
1130
|
+
rb_funcall2(sm_cached_entry, kRB_NAME_FREEZE, 0, 0);
|
1131
|
+
}
|
1132
|
+
}
|
1133
|
+
|
1134
|
+
return rb_call_super(0, 0);
|
1135
|
+
}
|
1136
|
+
|
1137
|
+
|
1138
|
+
|
967
1139
|
/*
|
968
1140
|
* Resizes the array to new_length and returns self.
|
969
1141
|
*
|
@@ -1052,6 +1224,10 @@ static VALUE sm_mat3_array_fetch(VALUE sm_self, VALUE sm_index)
|
|
1052
1224
|
rb_ary_store(sm_cache, (long)index, sm_inner);
|
1053
1225
|
}
|
1054
1226
|
|
1227
|
+
if (OBJ_FROZEN(sm_self)) {
|
1228
|
+
rb_funcall2(sm_inner, kRB_NAME_FREEZE, 0, 0);
|
1229
|
+
}
|
1230
|
+
|
1055
1231
|
return sm_inner;
|
1056
1232
|
}
|
1057
1233
|
|
@@ -1164,6 +1340,37 @@ static VALUE sm_mat4_array_new(VALUE sm_self, VALUE sm_length_or_copy)
|
|
1164
1340
|
|
1165
1341
|
|
1166
1342
|
|
1343
|
+
/*
|
1344
|
+
* Freezes the array and its elements.
|
1345
|
+
*
|
1346
|
+
* call-seq: freeze -> self
|
1347
|
+
*/
|
1348
|
+
static VALUE sm_mat4_array_freeze(VALUE sm_self)
|
1349
|
+
{
|
1350
|
+
VALUE sm_cache;
|
1351
|
+
VALUE sm_cached_entry;
|
1352
|
+
long length;
|
1353
|
+
long index;
|
1354
|
+
|
1355
|
+
if (OBJ_FROZEN(sm_self)) {
|
1356
|
+
return sm_self;
|
1357
|
+
}
|
1358
|
+
|
1359
|
+
sm_cache = rb_ivar_get(sm_self, kRB_IVAR_MATHARRAY_CACHE);
|
1360
|
+
length = RARRAY_LEN(sm_cache);
|
1361
|
+
|
1362
|
+
for (index = 0; index < length; ++index) {
|
1363
|
+
sm_cached_entry = rb_ary_entry(sm_cache, index);
|
1364
|
+
if (RTEST(sm_cached_entry)) {
|
1365
|
+
rb_funcall2(sm_cached_entry, kRB_NAME_FREEZE, 0, 0);
|
1366
|
+
}
|
1367
|
+
}
|
1368
|
+
|
1369
|
+
return rb_call_super(0, 0);
|
1370
|
+
}
|
1371
|
+
|
1372
|
+
|
1373
|
+
|
1167
1374
|
/*
|
1168
1375
|
* Resizes the array to new_length and returns self.
|
1169
1376
|
*
|
@@ -1252,6 +1459,10 @@ static VALUE sm_mat4_array_fetch(VALUE sm_self, VALUE sm_index)
|
|
1252
1459
|
rb_ary_store(sm_cache, (long)index, sm_inner);
|
1253
1460
|
}
|
1254
1461
|
|
1462
|
+
if (OBJ_FROZEN(sm_self)) {
|
1463
|
+
rb_funcall2(sm_inner, kRB_NAME_FREEZE, 0, 0);
|
1464
|
+
}
|
1465
|
+
|
1255
1466
|
return sm_inner;
|
1256
1467
|
}
|
1257
1468
|
|
@@ -6694,6 +6905,7 @@ void Init_bindings()
|
|
6694
6905
|
ID kRB_CONST_SIZE, kRB_CONST_LENGTH, kRB_CONST_FLOAT_SIZE, kRB_CONST_TYPE,
|
6695
6906
|
kRB_SIZE_METHOD, kRB_BYTESIZE_METHOD;
|
6696
6907
|
|
6908
|
+
kRB_NAME_FREEZE = rb_intern("freeze");
|
6697
6909
|
kRB_IVAR_MATHARRAY_LENGTH = rb_intern("__length");
|
6698
6910
|
kRB_IVAR_MATHARRAY_CACHE = rb_intern("__cache");
|
6699
6911
|
kRB_IVAR_MATHARRAY_SOURCE = rb_intern("__source");
|
@@ -6916,6 +7128,7 @@ void Init_bindings()
|
|
6916
7128
|
s_sm_vec2_array_klass = rb_define_class_under(s_sm_snowmath_mod, "Vec2Array", rb_cData);
|
6917
7129
|
rb_const_set(s_sm_vec2_array_klass, kRB_CONST_TYPE, s_sm_vec2_klass);
|
6918
7130
|
rb_define_singleton_method(s_sm_vec2_array_klass, "new", sm_vec2_array_new, 1);
|
7131
|
+
rb_define_method(s_sm_vec2_array_klass, "freeze", sm_vec2_array_freeze, 0);
|
6919
7132
|
rb_define_method(s_sm_vec2_array_klass, "fetch", sm_vec2_array_fetch, 1);
|
6920
7133
|
rb_define_method(s_sm_vec2_array_klass, "store", sm_vec2_array_store, 2);
|
6921
7134
|
rb_define_method(s_sm_vec2_array_klass, "resize!", sm_vec2_array_resize, 1);
|
@@ -6927,6 +7140,7 @@ void Init_bindings()
|
|
6927
7140
|
s_sm_vec3_array_klass = rb_define_class_under(s_sm_snowmath_mod, "Vec3Array", rb_cData);
|
6928
7141
|
rb_const_set(s_sm_vec3_array_klass, kRB_CONST_TYPE, s_sm_vec3_klass);
|
6929
7142
|
rb_define_singleton_method(s_sm_vec3_array_klass, "new", sm_vec3_array_new, 1);
|
7143
|
+
rb_define_method(s_sm_vec3_array_klass, "freeze", sm_vec3_array_freeze, 0);
|
6930
7144
|
rb_define_method(s_sm_vec3_array_klass, "fetch", sm_vec3_array_fetch, 1);
|
6931
7145
|
rb_define_method(s_sm_vec3_array_klass, "store", sm_vec3_array_store, 2);
|
6932
7146
|
rb_define_method(s_sm_vec3_array_klass, "resize!", sm_vec3_array_resize, 1);
|
@@ -6938,6 +7152,7 @@ void Init_bindings()
|
|
6938
7152
|
s_sm_vec4_array_klass = rb_define_class_under(s_sm_snowmath_mod, "Vec4Array", rb_cData);
|
6939
7153
|
rb_const_set(s_sm_vec4_array_klass, kRB_CONST_TYPE, s_sm_vec4_klass);
|
6940
7154
|
rb_define_singleton_method(s_sm_vec4_array_klass, "new", sm_vec4_array_new, 1);
|
7155
|
+
rb_define_method(s_sm_vec4_array_klass, "freeze", sm_vec4_array_freeze, 0);
|
6941
7156
|
rb_define_method(s_sm_vec4_array_klass, "fetch", sm_vec4_array_fetch, 1);
|
6942
7157
|
rb_define_method(s_sm_vec4_array_klass, "store", sm_vec4_array_store, 2);
|
6943
7158
|
rb_define_method(s_sm_vec4_array_klass, "resize!", sm_vec4_array_resize, 1);
|
@@ -6949,6 +7164,7 @@ void Init_bindings()
|
|
6949
7164
|
s_sm_quat_array_klass = rb_define_class_under(s_sm_snowmath_mod, "QuatArray", rb_cData);
|
6950
7165
|
rb_const_set(s_sm_quat_array_klass, kRB_CONST_TYPE, s_sm_quat_klass);
|
6951
7166
|
rb_define_singleton_method(s_sm_quat_array_klass, "new", sm_quat_array_new, 1);
|
7167
|
+
rb_define_method(s_sm_quat_array_klass, "freeze", sm_quat_array_freeze, 0);
|
6952
7168
|
rb_define_method(s_sm_quat_array_klass, "fetch", sm_quat_array_fetch, 1);
|
6953
7169
|
rb_define_method(s_sm_quat_array_klass, "store", sm_quat_array_store, 2);
|
6954
7170
|
rb_define_method(s_sm_quat_array_klass, "resize!", sm_quat_array_resize, 1);
|
@@ -6960,6 +7176,7 @@ void Init_bindings()
|
|
6960
7176
|
s_sm_mat3_array_klass = rb_define_class_under(s_sm_snowmath_mod, "Mat3Array", rb_cData);
|
6961
7177
|
rb_const_set(s_sm_mat3_array_klass, kRB_CONST_TYPE, s_sm_mat3_klass);
|
6962
7178
|
rb_define_singleton_method(s_sm_mat3_array_klass, "new", sm_mat3_array_new, 1);
|
7179
|
+
rb_define_method(s_sm_mat3_array_klass, "freeze", sm_mat3_array_freeze, 0);
|
6963
7180
|
rb_define_method(s_sm_mat3_array_klass, "fetch", sm_mat3_array_fetch, 1);
|
6964
7181
|
rb_define_method(s_sm_mat3_array_klass, "store", sm_mat3_array_store, 2);
|
6965
7182
|
rb_define_method(s_sm_mat3_array_klass, "resize!", sm_mat3_array_resize, 1);
|
@@ -6971,6 +7188,7 @@ void Init_bindings()
|
|
6971
7188
|
s_sm_mat4_array_klass = rb_define_class_under(s_sm_snowmath_mod, "Mat4Array", rb_cData);
|
6972
7189
|
rb_const_set(s_sm_mat4_array_klass, kRB_CONST_TYPE, s_sm_mat4_klass);
|
6973
7190
|
rb_define_singleton_method(s_sm_mat4_array_klass, "new", sm_mat4_array_new, 1);
|
7191
|
+
rb_define_method(s_sm_mat4_array_klass, "freeze", sm_mat4_array_freeze, 0);
|
6974
7192
|
rb_define_method(s_sm_mat4_array_klass, "fetch", sm_mat4_array_fetch, 1);
|
6975
7193
|
rb_define_method(s_sm_mat4_array_klass, "store", sm_mat4_array_store, 2);
|
6976
7194
|
rb_define_method(s_sm_mat4_array_klass, "resize!", sm_mat4_array_resize, 1);
|
data/lib/snow-math/mat3.rb
CHANGED
@@ -28,6 +28,10 @@ end
|
|
28
28
|
#
|
29
29
|
class Snow::Mat3
|
30
30
|
|
31
|
+
IDENTITY = self.new.freeze
|
32
|
+
ONE = self.new(Array.new(9, 1)).freeze
|
33
|
+
ZERO = self.new(Array.new(9, 0)).freeze
|
34
|
+
|
31
35
|
class << self ; alias_method :[], :new ; end
|
32
36
|
|
33
37
|
alias_method :[], :fetch
|
@@ -110,9 +114,10 @@ class Snow::Mat3
|
|
110
114
|
#
|
111
115
|
# Calls #multiply(rhs, self).
|
112
116
|
#
|
113
|
-
# call-seq:
|
114
|
-
#
|
115
|
-
#
|
117
|
+
# call-seq:
|
118
|
+
# multiply!(mat3) -> self
|
119
|
+
# multiply!(vec3) -> vec3
|
120
|
+
# multiply!(scalar) -> self
|
116
121
|
#
|
117
122
|
def multiply!(rhs)
|
118
123
|
multiply rhs, case rhs
|
data/lib/snow-math/mat4.rb
CHANGED
@@ -29,6 +29,10 @@ end
|
|
29
29
|
#
|
30
30
|
class Snow::Mat4
|
31
31
|
|
32
|
+
IDENTITY = self.new.freeze
|
33
|
+
ONE = self.new(Array.new(16, 1)).freeze
|
34
|
+
ZERO = self.new(Array.new(16, 0)).freeze
|
35
|
+
|
32
36
|
class << self ; alias_method :[], :new ; end
|
33
37
|
|
34
38
|
alias_method :[], :fetch
|
@@ -137,8 +141,9 @@ class Snow::Mat4
|
|
137
141
|
|
138
142
|
# Calls #translate(*args, self)
|
139
143
|
#
|
140
|
-
# call-seq:
|
141
|
-
#
|
144
|
+
# call-seq:
|
145
|
+
# translate!(vec3) -> self
|
146
|
+
# translate!(x, y, z) -> self
|
142
147
|
def translate!(*args)
|
143
148
|
translate(*args, self)
|
144
149
|
end
|
data/lib/snow-math/quat.rb
CHANGED
@@ -25,6 +25,16 @@ end
|
|
25
25
|
#
|
26
26
|
class Snow::Quat
|
27
27
|
|
28
|
+
POS_X = self.new(1, 0, 0, 1).freeze
|
29
|
+
POS_Y = self.new(0, 1, 0, 1).freeze
|
30
|
+
POS_Z = self.new(0, 0, 1, 1).freeze
|
31
|
+
NEG_X = self.new(-1, 0, 0, 1).freeze
|
32
|
+
NEG_Y = self.new(0, -1, 0, 1).freeze
|
33
|
+
NEG_Z = self.new(0, 0, -1, 1).freeze
|
34
|
+
ONE = self.new(1, 1, 1, 1).freeze
|
35
|
+
ZERO = self.new(0, 0, 0, 0).freeze
|
36
|
+
IDENTITY = self.new(0, 0, 0, 1).freeze
|
37
|
+
|
28
38
|
class << self ; alias_method :[], :new ; end
|
29
39
|
|
30
40
|
alias_method :[], :fetch
|
data/lib/snow-math/vec2.rb
CHANGED
@@ -28,6 +28,13 @@ end
|
|
28
28
|
#
|
29
29
|
class Snow::Vec2
|
30
30
|
|
31
|
+
POS_X = self.new(1, 0).freeze
|
32
|
+
POS_Y = self.new(0, 1).freeze
|
33
|
+
NEG_X = self.new(-1, 0).freeze
|
34
|
+
NEG_Y = self.new(0, -1).freeze
|
35
|
+
ONE = self.new(1, 1).freeze
|
36
|
+
ZERO = self.new.freeze
|
37
|
+
|
31
38
|
class << self ; alias_method :[], :new ; end
|
32
39
|
|
33
40
|
alias_method :[], :fetch
|
data/lib/snow-math/vec3.rb
CHANGED
@@ -27,6 +27,15 @@ end
|
|
27
27
|
#
|
28
28
|
class Snow::Vec3
|
29
29
|
|
30
|
+
POS_X = self.new(1, 0, 0).freeze
|
31
|
+
POS_Y = self.new(0, 1, 0).freeze
|
32
|
+
POS_Z = self.new(0, 0, 1).freeze
|
33
|
+
NEG_X = self.new(-1, 0, 0).freeze
|
34
|
+
NEG_Y = self.new(0, -1, 0).freeze
|
35
|
+
NEG_Z = self.new(0, 0, -1).freeze
|
36
|
+
ONE = self.new(1, 1, 1).freeze
|
37
|
+
ZERO = self.new.freeze
|
38
|
+
|
30
39
|
# Shortcut through to new
|
31
40
|
class << self ; alias_method :[], :new ; end
|
32
41
|
|
data/lib/snow-math/vec4.rb
CHANGED
@@ -27,6 +27,16 @@ end
|
|
27
27
|
#
|
28
28
|
class Snow::Vec4
|
29
29
|
|
30
|
+
POS_X = self.new(1, 0, 0, 1).freeze
|
31
|
+
POS_Y = self.new(0, 1, 0, 1).freeze
|
32
|
+
POS_Z = self.new(0, 0, 1, 1).freeze
|
33
|
+
NEG_X = self.new(-1, 0, 0, 1).freeze
|
34
|
+
NEG_Y = self.new(0, -1, 0, 1).freeze
|
35
|
+
NEG_Z = self.new(0, 0, -1, 1).freeze
|
36
|
+
ONE = self.new(1, 1, 1, 1).freeze
|
37
|
+
ZERO = self.new(0, 0, 0, 0).freeze
|
38
|
+
IDENTITY = self.new(0, 0, 0, 1).freeze
|
39
|
+
|
30
40
|
class << self ; alias_method :[], :new ; end
|
31
41
|
|
32
42
|
alias_method :[], :fetch
|
data/lib/snow-math/version.rb
CHANGED