cglm 0.1.1 → 0.1.4
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/Gemfile.lock +16 -14
- data/ext/cglm/rb_cglm.c +4 -3
- data/ext/cglm/rb_cglm.h +2 -2
- data/ext/cglm/rb_cglm_affine.c +18 -10
- data/ext/cglm/rb_cglm_quat.c +5 -3
- data/lib/cglm/base.rb +2 -1
- data/lib/cglm/mat3.rb +8 -1
- data/lib/cglm/mat4.rb +1 -1
- data/lib/cglm/matrix_type.rb +10 -0
- data/lib/cglm/version.rb +1 -1
- data/lib/cglm.rb +1 -0
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89c806f5a00ef690cfead8c0c384f4a7c0cc5c1734129a43313f952e4c96b04f
|
4
|
+
data.tar.gz: 3609604cbbee1cc090c70ed9e21cde21f77be10a20cdfd1c3964c955a53bb47a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65337d472039a5ad4e8a613b760f6de059d5461f19ad8410a6fe6e87e218a5303de8396dad3ba7311e5c41bc9caedf0274cb633fb08d091ef7b54b092169bb45
|
7
|
+
data.tar.gz: 6fa21d54b27454acda36f4bcb73bd0f99e17707448627d9ed50071076da60b0d3c8544ab8c000379efe5c04c2cabbd5f5f5cdf2a02aeee71e5093739c48ecf79
|
data/Gemfile.lock
CHANGED
@@ -1,25 +1,27 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cglm (0.1.
|
4
|
+
cglm (0.1.4)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
docile (1.
|
10
|
-
github-markup (
|
11
|
-
|
12
|
-
|
13
|
-
rake (
|
14
|
-
rake-compiler (1.1.0)
|
9
|
+
docile (1.4.0)
|
10
|
+
github-markup (4.0.0)
|
11
|
+
minitest (5.15.0)
|
12
|
+
rake (13.0.6)
|
13
|
+
rake-compiler (1.1.9)
|
15
14
|
rake
|
16
|
-
redcarpet (3.5.
|
17
|
-
simplecov (0.
|
15
|
+
redcarpet (3.5.1)
|
16
|
+
simplecov (0.21.2)
|
18
17
|
docile (~> 1.1)
|
19
|
-
|
20
|
-
|
21
|
-
simplecov-html (0.
|
22
|
-
|
18
|
+
simplecov-html (~> 0.11)
|
19
|
+
simplecov_json_formatter (~> 0.1)
|
20
|
+
simplecov-html (0.12.3)
|
21
|
+
simplecov_json_formatter (0.1.4)
|
22
|
+
webrick (1.7.0)
|
23
|
+
yard (0.9.27)
|
24
|
+
webrick (~> 1.7.0)
|
23
25
|
|
24
26
|
PLATFORMS
|
25
27
|
ruby
|
@@ -36,4 +38,4 @@ DEPENDENCIES
|
|
36
38
|
yard (~> 0.9)
|
37
39
|
|
38
40
|
BUNDLED WITH
|
39
|
-
2.
|
41
|
+
2.2.3
|
data/ext/cglm/rb_cglm.c
CHANGED
@@ -5,6 +5,7 @@ VALUE rb_cFiddle = Qnil,
|
|
5
5
|
rb_mCGLM = Qnil,
|
6
6
|
rb_cCGLMBase = Qnil,
|
7
7
|
rb_cVectorType = Qnil,
|
8
|
+
rb_cMatrixType = Qnil,
|
8
9
|
rb_cMat3 = Qnil,
|
9
10
|
rb_cMat4 = Qnil,
|
10
11
|
rb_cVec3 = Qnil,
|
@@ -33,9 +34,9 @@ void Init_cglm(void) {
|
|
33
34
|
rb_mCGLM = rb_define_module("CGLM");
|
34
35
|
rb_mEuler = rb_define_module_under(rb_mCGLM, "Euler");
|
35
36
|
rb_cCGLMBase = rb_define_class_under(rb_mCGLM, "Base", rb_cObject);
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
rb_cMatrixType = rb_define_class_under(rb_mCGLM, "MatrixType", rb_cCGLMBase);
|
38
|
+
rb_cMat3 = rb_define_class_under(rb_mCGLM, "Mat3", rb_cMatrixType);
|
39
|
+
rb_cMat4 = rb_define_class_under(rb_mCGLM, "Mat4", rb_cMatrixType);
|
39
40
|
rb_cVectorType = rb_define_class_under(rb_mCGLM, "VectorType", rb_cCGLMBase);
|
40
41
|
rb_cAABB = rb_define_class_under(rb_mCGLM, "AABB", rb_cCGLMBase);
|
41
42
|
rb_cVec3 = rb_define_class_under(rb_mCGLM, "Vec3", rb_cVectorType);
|
data/ext/cglm/rb_cglm.h
CHANGED
@@ -97,7 +97,7 @@ static inline size_t vec3_size() { return sizeof(vec3); }
|
|
97
97
|
static inline size_t vec4_size() { return sizeof(vec4); }
|
98
98
|
static inline size_t aabb_size() { return sizeof(aabb); }
|
99
99
|
static inline size_t mat4_size() { return sizeof(mat4); }
|
100
|
-
static inline size_t mat3_size() { return sizeof(
|
100
|
+
static inline size_t mat3_size() { return sizeof(mat3); }
|
101
101
|
static inline size_t quat_size() { return sizeof(mat4); }
|
102
102
|
static inline size_t plane_size() { return sizeof(plane); }
|
103
103
|
|
@@ -153,7 +153,7 @@ static inline void *VAL2ADDR(VALUE val, size_t min_size) {
|
|
153
153
|
VALUE addr = rb_funcall(val, rb_intern("addr"), 0);
|
154
154
|
VALUE size = rb_funcall(addr, rb_intern("size"), 0);
|
155
155
|
if (min_size > NUM2SIZET(size))
|
156
|
-
rb_raise(rb_eArgError, "memory store (size %zu) is not large enough to be converted into the requested type (size %zu)", NUM2SIZET(size), min_size);
|
156
|
+
rb_raise(rb_eArgError, "memory store (size %zu) is not large enough to be converted into the requested type (size %zu)", (size_t) NUM2SIZET(size), min_size);
|
157
157
|
return NUM2PTR(rb_funcall(addr, rb_intern("to_i"), 0));
|
158
158
|
}
|
159
159
|
|
data/ext/cglm/rb_cglm_affine.c
CHANGED
@@ -130,22 +130,30 @@ VALUE rb_cglm_translate_z_self(VALUE self, VALUE flt) {
|
|
130
130
|
}
|
131
131
|
|
132
132
|
/* call-seq: translate(vec3) => new Mat4 */
|
133
|
-
VALUE rb_cglm_translate_new(VALUE
|
134
|
-
VALUE dest
|
133
|
+
VALUE rb_cglm_translate_new(int argc, VALUE *argv, VALUE klass) {
|
134
|
+
VALUE vec_v, dest;
|
135
|
+
rb_scan_args(argc, argv, "11", &vec_v, &dest);
|
136
|
+
if (NIL_P(dest)) dest = MAT4_NEW(ALLOC_MAT4);
|
135
137
|
glm_translate_make(VAL2MAT4(dest), VAL2VEC3(vec_v));
|
136
138
|
return dest;
|
137
139
|
}
|
138
140
|
|
139
141
|
/* call-seq: scale(vec3) => new Mat4 */
|
140
|
-
VALUE rb_cglm_scale_new(VALUE
|
141
|
-
VALUE dest
|
142
|
+
VALUE rb_cglm_scale_new(int argc, VALUE *argv, VALUE klass) {
|
143
|
+
VALUE vec_v, dest;
|
144
|
+
rb_scan_args(argc, argv, "11", &vec_v, &dest);
|
145
|
+
if (NIL_P(dest)) dest = MAT4_NEW(ALLOC_MAT4);
|
142
146
|
glm_scale_make(VAL2MAT4(dest), VAL2VEC3(vec_v));
|
143
147
|
return dest;
|
144
148
|
}
|
145
149
|
|
146
|
-
/*
|
147
|
-
|
148
|
-
|
150
|
+
/*
|
151
|
+
* call-seq: rotate(axis, angle[, dest]) => dest | new Mat4
|
152
|
+
*/
|
153
|
+
VALUE rb_cglm_rotate_new(int argc, VALUE *argv, VALUE klass) {
|
154
|
+
VALUE axis, angle, dest;
|
155
|
+
rb_scan_args(argc, argv, "21", &axis, &angle, &dest);
|
156
|
+
if (NIL_P(dest)) dest = MAT4_NEW(ALLOC_MAT4);
|
149
157
|
glm_rotate_make(VAL2MAT4(dest), (float) NUM2DBL(angle), VAL2VEC3(axis));
|
150
158
|
return dest;
|
151
159
|
}
|
@@ -318,8 +326,8 @@ void Init_cglm_affine() {
|
|
318
326
|
rb_define_method(rb_cMat4, "decompose_rs", rb_cglm_decompose_rs, 2);
|
319
327
|
rb_define_method(rb_cMat4, "decompose", rb_cglm_decompose, 3);
|
320
328
|
|
321
|
-
rb_define_singleton_method(rb_cMat4, "translate", rb_cglm_translate_new
|
322
|
-
rb_define_singleton_method(rb_cMat4, "scale", rb_cglm_scale_new,
|
323
|
-
rb_define_singleton_method(rb_cMat4, "rotate", rb_cglm_rotate_new,
|
329
|
+
rb_define_singleton_method(rb_cMat4, "translate", rb_cglm_translate_new,-1);
|
330
|
+
rb_define_singleton_method(rb_cMat4, "scale", rb_cglm_scale_new, -1);
|
331
|
+
rb_define_singleton_method(rb_cMat4, "rotate", rb_cglm_rotate_new, -1);
|
324
332
|
rb_define_singleton_method(rb_cMat4, "axis_angle_rotate_at", rb_cglm_rotate_at_new, 3);
|
325
333
|
}
|
data/ext/cglm/rb_cglm_quat.c
CHANGED
@@ -9,7 +9,9 @@ VALUE rb_cglm_quat_new_identity(int argc, VALUE *argv, VALUE self) {
|
|
9
9
|
return dest;
|
10
10
|
}
|
11
11
|
|
12
|
-
/*
|
12
|
+
/*
|
13
|
+
* call-seq: axis_angle(axis, angle[, dest]) => dest | new Quat
|
14
|
+
*/
|
13
15
|
VALUE rb_cglm_quat_new_axis_angle(int argc, VALUE *argv, VALUE self) {
|
14
16
|
VALUE axis, angle, dest;
|
15
17
|
rb_scan_args(argc, argv, "21", &axis, &angle, &dest);
|
@@ -201,13 +203,13 @@ VALUE rb_cglm_quat_to_mat3t(int argc, VALUE *argv, VALUE self) {
|
|
201
203
|
|
202
204
|
/* call-seq: lerp!(from, to, amount) => self */
|
203
205
|
VALUE rb_cglm_quat_lerp_self(VALUE self, VALUE from, VALUE to, VALUE amount) {
|
204
|
-
glm_quat_lerp(VAL2QUAT(from), VAL2QUAT(to), NUM2FLT(
|
206
|
+
glm_quat_lerp(VAL2QUAT(from), VAL2QUAT(to), NUM2FLT(amount), VAL2QUAT(self));
|
205
207
|
return self;
|
206
208
|
}
|
207
209
|
|
208
210
|
/* call-seq: slerp!(from, to, amount) => self */
|
209
211
|
VALUE rb_cglm_quat_slerp_self(VALUE self, VALUE from, VALUE to, VALUE amount) {
|
210
|
-
glm_quat_slerp(VAL2QUAT(from), VAL2QUAT(to), NUM2FLT(
|
212
|
+
glm_quat_slerp(VAL2QUAT(from), VAL2QUAT(to), NUM2FLT(amount), VAL2QUAT(self));
|
211
213
|
return self;
|
212
214
|
}
|
213
215
|
|
data/lib/cglm/base.rb
CHANGED
data/lib/cglm/mat3.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module CGLM
|
2
|
-
class Mat3 <
|
2
|
+
class Mat3 < MatrixType
|
3
3
|
# Performs multiplication with `other` and returns the result.
|
4
4
|
#
|
5
5
|
# * `other` is a Mat3 or Vec3.
|
@@ -23,5 +23,12 @@ module CGLM
|
|
23
23
|
left = "#<#{self.class}@#{addr.to_i.to_s(16)} ["
|
24
24
|
left + vals.join(",\n" + (" " * left.size)) + "]>"
|
25
25
|
end
|
26
|
+
|
27
|
+
# Returns a flat array of floats, rather than the 2D array returned by
|
28
|
+
# #to_a. Equivalent to `to_a.flatten`, but more efficient.
|
29
|
+
def to_flat_a
|
30
|
+
addr = self.addr
|
31
|
+
addr[0, addr.size].unpack("F*")
|
32
|
+
end
|
26
33
|
end
|
27
34
|
end
|
data/lib/cglm/mat4.rb
CHANGED
data/lib/cglm/version.rb
CHANGED
data/lib/cglm.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cglm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Colin MacKenzie IV
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
-
description:
|
125
|
+
description:
|
126
126
|
email:
|
127
127
|
- sinisterchipmunk@gmail.com
|
128
128
|
executables: []
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- lib/cglm/frustum.rb
|
242
242
|
- lib/cglm/mat3.rb
|
243
243
|
- lib/cglm/mat4.rb
|
244
|
+
- lib/cglm/matrix_type.rb
|
244
245
|
- lib/cglm/plane.rb
|
245
246
|
- lib/cglm/quat.rb
|
246
247
|
- lib/cglm/sphere.rb
|
@@ -255,7 +256,7 @@ metadata:
|
|
255
256
|
allowed_push_host: https://rubygems.org
|
256
257
|
homepage_uri: https://github.com/sinisterchipmunk/cglm-ruby
|
257
258
|
source_code_uri: https://github.com/sinisterchipmunk/cglm-ruby
|
258
|
-
post_install_message:
|
259
|
+
post_install_message:
|
259
260
|
rdoc_options: []
|
260
261
|
require_paths:
|
261
262
|
- lib
|
@@ -270,8 +271,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
270
271
|
- !ruby/object:Gem::Version
|
271
272
|
version: '0'
|
272
273
|
requirements: []
|
273
|
-
rubygems_version: 3.
|
274
|
-
signing_key:
|
274
|
+
rubygems_version: 3.3.7
|
275
|
+
signing_key:
|
275
276
|
specification_version: 4
|
276
277
|
summary: Ruby bindings for CGLM (https://github.com/recp/cglm), a high performance
|
277
278
|
math library for graphics applications.
|