numerix 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +5 -0
  4. data/.yardopts +5 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +6 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +66 -0
  9. data/Rakefile +18 -0
  10. data/TODO.txt +25 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/ext/numerix/common.h +107 -0
  14. data/ext/numerix/extconf.rb +3 -0
  15. data/ext/numerix/matrix3x2.c +638 -0
  16. data/ext/numerix/matrix3x2.h +52 -0
  17. data/ext/numerix/matrix4x4.c +1807 -0
  18. data/ext/numerix/matrix4x4.h +90 -0
  19. data/ext/numerix/matrix_base.c +307 -0
  20. data/ext/numerix/matrix_base.h +70 -0
  21. data/ext/numerix/numerix.c +33 -0
  22. data/ext/numerix/numerix.h +19 -0
  23. data/ext/numerix/plane.c +311 -0
  24. data/ext/numerix/plane.h +34 -0
  25. data/ext/numerix/quaternion.c +712 -0
  26. data/ext/numerix/quaternion.h +53 -0
  27. data/ext/numerix/structure.c +154 -0
  28. data/ext/numerix/structure.h +24 -0
  29. data/ext/numerix/vector.c +326 -0
  30. data/ext/numerix/vector.h +57 -0
  31. data/ext/numerix/vector2.c +641 -0
  32. data/ext/numerix/vector2.h +64 -0
  33. data/ext/numerix/vector3.c +805 -0
  34. data/ext/numerix/vector3.h +68 -0
  35. data/ext/numerix/vector4.c +727 -0
  36. data/ext/numerix/vector4.h +63 -0
  37. data/ext/numerix/vector_base.c +94 -0
  38. data/ext/numerix/vector_base.h +30 -0
  39. data/extra/numerix128.png +0 -0
  40. data/extra/numerix24.png +0 -0
  41. data/extra/numerix32.png +0 -0
  42. data/extra/numerix320.png +0 -0
  43. data/extra/numerix48.png +0 -0
  44. data/extra/numerix96.png +0 -0
  45. data/lib/numerix/error.rb +36 -0
  46. data/lib/numerix/matrix3x2.rb +420 -0
  47. data/lib/numerix/matrix4x4.rb +676 -0
  48. data/lib/numerix/matrix_base.rb +14 -0
  49. data/lib/numerix/plane.rb +154 -0
  50. data/lib/numerix/quaternion.rb +355 -0
  51. data/lib/numerix/structure.rb +124 -0
  52. data/lib/numerix/vector.rb +13 -0
  53. data/lib/numerix/vector2.rb +534 -0
  54. data/lib/numerix/vector3.rb +572 -0
  55. data/lib/numerix/vector4.rb +551 -0
  56. data/lib/numerix/vector_base.rb +14 -0
  57. data/lib/numerix/version.rb +6 -0
  58. data/lib/numerix.rb +10 -0
  59. data/numerix.gemspec +30 -0
  60. metadata +167 -0
@@ -0,0 +1,68 @@
1
+ #ifndef NUMERIX_VECTOR3_H
2
+ #define NUMERIX_VECTOR3_H 1
3
+
4
+ #include "common.h"
5
+ #include "vector_base.h"
6
+
7
+ void Init_vector3(VALUE outer);
8
+ static VALUE rb_vector3_alloc(VALUE klass);
9
+ VALUE rb_vector3_initialize(int argc, VALUE *argv, VALUE self);
10
+
11
+ // Instance
12
+ VALUE rb_vector3_length(VALUE self);
13
+ VALUE rb_vector3_length_squared(VALUE self);
14
+ VALUE rb_vector3_add(VALUE self, VALUE other);
15
+ VALUE rb_vector3_subtract(VALUE self, VALUE other);
16
+ VALUE rb_vector3_multiply(VALUE self, VALUE other);
17
+ VALUE rb_vector3_divide(VALUE self, VALUE other);
18
+ VALUE rb_vector3_equal(VALUE self, VALUE other);
19
+ VALUE rb_vector3_negate(VALUE self);
20
+ VALUE rb_vector3_one_p(VALUE self);
21
+ VALUE rb_vector3_zero_p(VALUE self);
22
+ VALUE rb_vector3_min_value(VALUE self);
23
+ VALUE rb_vector3_max_value(VALUE self);
24
+ VALUE rb_vector3_distance(VALUE self, VALUE other);
25
+ VALUE rb_vector3_distance_squared(VALUE self, VALUE other);
26
+ VALUE rb_vector3_normalize(VALUE self);
27
+ VALUE rb_vector3_lerp(VALUE self, VALUE other, VALUE amount);
28
+ VALUE rb_vector3_lerp_bang(VALUE self, VALUE other, VALUE amount);
29
+ VALUE rb_vector3_normalize_bang(VALUE self);
30
+ VALUE rb_vector3_transform(VALUE self, VALUE other);
31
+ VALUE rb_vector3_transform_bang(VALUE self, VALUE other);
32
+ VALUE rb_vector3_abs(VALUE self);
33
+ VALUE rb_vector3_sqrt(VALUE self);
34
+ VALUE rb_vector3_pow(VALUE self, VALUE exponent);
35
+ VALUE rb_vector3_dot(VALUE self, VALUE other);
36
+ VALUE rb_vector3_clamp(VALUE self, VALUE min, VALUE max);
37
+ VALUE rb_vector3_clamp_bang(VALUE self, VALUE min, VALUE max);
38
+ VALUE rb_vector3_cross(VALUE self, VALUE other);
39
+ VALUE rb_vector3_cross_bang(VALUE self, VALUE other);
40
+ VALUE rb_vector3_reflect(VALUE self, VALUE other);
41
+ VALUE rb_vector3_reflect_bang(VALUE self, VALUE other);
42
+ VALUE rb_vector3_angle(VALUE self, VALUE other);
43
+ VALUE rb_vector3_transform_normal(VALUE self, VALUE matrix);
44
+ VALUE rb_vector3_transform_normal_bang(VALUE self, VALUE matrix);
45
+ VALUE rb_vector3_map(VALUE self);
46
+ VALUE rb_vector3_map_bang(VALUE self);
47
+
48
+ // Conversion
49
+ VALUE rb_vector3_to_s(VALUE self);
50
+ VALUE rb_vector3_to_a(VALUE self);
51
+ VALUE rb_vector3_to_h(VALUE self);
52
+ VALUE rb_vector3_to_vec2(VALUE self);
53
+ VALUE rb_vector3_to_vec4(VALUE self);
54
+ VALUE rb_vector3_to_quaternion(VALUE self);
55
+ VALUE rb_vector3_to_plane(VALUE self);
56
+
57
+ // Class
58
+ VALUE rb_vector3_one(VALUE klass);
59
+ VALUE rb_vector3_unit_x(VALUE klass);
60
+ VALUE rb_vector3_unit_y(VALUE klass);
61
+ VALUE rb_vector3_unit_z(VALUE klass);
62
+ VALUE rb_vector3_create_norm(VALUE klass, VALUE x, VALUE y, VALUE z);
63
+ static inline VALUE rb_vector3_clamp_s(VALUE klass, VALUE vector, VALUE minimum, VALUE maximum);
64
+ static inline VALUE rb_vector3_lerp_s(VALUE klass, VALUE vec1, VALUE vec2, VALUE amount);
65
+ static inline VALUE rb_vector3_min_s(VALUE klass, VALUE vec1, VALUE vec2);
66
+ static inline VALUE rb_vector3_max_s(VALUE klass, VALUE vec1, VALUE vec2);
67
+
68
+ #endif /* NUMERIX_VECTOR3_H */