Method: CGLM::Mat4#scale

Defined in:
ext/cglm/rb_cglm_affine.c

#scale(vec3|float[, dest]) ⇒ dest | new Mat4

Returns:



162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'ext/cglm/rb_cglm_affine.c', line 162

VALUE rb_cglm_scale(int argc, VALUE *argv, VALUE self) {
  VALUE factor, dest;
  rb_scan_args(argc, argv, "11", &factor, &dest);
  if (NIL_P(dest)) dest = MAT4_NEW(ALLOC_MAT4);

  if (RB_FLOAT_TYPE_P(factor) || RB_INTEGER_TYPE_P(factor)) {
    memcpy(&VAL2MAT4(dest), &VAL2MAT4(self), sizeof(mat4));
    glm_scale_uni(VAL2MAT4(dest), (float) NUM2DBL(factor));
  } else {
    glm_scale_to(VAL2MAT4(self), VAL2VEC3(factor), VAL2MAT4(dest));
  }

  return dest;
}