3D Affine Transforms (pre)¶
Pre transfrom functions which are regular transfrom functions.
Table of contents (click to go):¶
Functions:
glm_translate_to()
glm_translate()
glm_translate_x()
glm_translate_y()
glm_translate_z()
glm_translate_make()
glm_scale_to()
glm_scale_make()
glm_scale()
glm_scale_uni()
glm_rotate_x()
glm_rotate_y()
glm_rotate_z()
glm_rotate_make()
glm_rotate()
glm_rotate_at()
glm_rotate_atm()
glm_decompose_scalev()
glm_uniscaled()
glm_decompose_rs()
glm_decompose()
glm_spin()
Functions documentation¶
-
void
glm_translate_to
(mat4 m, vec3 v, mat4 dest)¶ translate existing transform matrix by v vector and store result in dest
- Parameters:
- [in] m affine transfrom[in] v translate vector [x, y, z][out] dest translated matrix
-
void
glm_translate
(mat4 m, vec3 v)¶ translate existing transform matrix by v vector and stores result in same matrix
- Parameters:
- [in, out] m affine transfrom[in] v translate vector [x, y, z]
-
void
glm_translate_x
(mat4 m, float x)¶ translate existing transform matrix by x factor
- Parameters:
- [in, out] m affine transfrom[in] v x factor
-
void
glm_translate_y
(mat4 m, float y)¶ translate existing transform matrix by y factor
- Parameters:
- [in, out] m affine transfrom[in] v y factor
-
void
glm_translate_z
(mat4 m, float z)¶ translate existing transform matrix by z factor
- Parameters:
- [in, out] m affine transfrom[in] v z factor
-
void
glm_translate_make
(mat4 m, vec3 v)¶ creates NEW translate transform matrix by v vector.
- Parameters:
- [in, out] m affine transfrom[in] v translate vector [x, y, z]
-
void
glm_scale_to
(mat4 m, vec3 v, mat4 dest)¶ scale existing transform matrix by v vector and store result in dest
- Parameters:
- [in] m affine transfrom[in] v scale vector [x, y, z][out] dest scaled matrix
-
void
glm_scale_make
(mat4 m, vec3 v)¶ creates NEW scale matrix by v vector
- Parameters:
- [out] m affine transfrom[in] v scale vector [x, y, z]
-
void
glm_scale
(mat4 m, vec3 v)¶ scales existing transform matrix by v vector and stores result in same matrix
- Parameters:
- [in, out] m affine transfrom[in] v scale vector [x, y, z]
-
void
glm_scale_uni
(mat4 m, float s)¶ applies uniform scale to existing transform matrix v = [s, s, s] and stores result in same matrix
- Parameters:
- [in, out] m affine transfrom[in] v scale factor
-
void
glm_rotate_x
(mat4 m, float angle, mat4 dest)¶ rotate existing transform matrix around X axis by angle and store result in dest
- Parameters:
- [in] m affine transfrom[in] angle angle (radians)[out] dest rotated matrix
-
void
glm_rotate_y
(mat4 m, float angle, mat4 dest)¶ rotate existing transform matrix around Y axis by angle and store result in dest
- Parameters:
- [in] m affine transfrom[in] angle angle (radians)[out] dest rotated matrix
-
void
glm_rotate_z
(mat4 m, float angle, mat4 dest)¶ rotate existing transform matrix around Z axis by angle and store result in dest
- Parameters:
- [in] m affine transfrom[in] angle angle (radians)[out] dest rotated matrix
-
void
glm_rotate_make
(mat4 m, float angle, vec3 axis)¶ creates NEW rotation matrix by angle and axis, axis will be normalized so you don’t need to normalize it
- Parameters:
- [out] m affine transfrom[in] axis angle (radians)[in] axis axis
-
void
glm_rotate
(mat4 m, float angle, vec3 axis)¶ rotate existing transform matrix around Z axis by angle and axis
- Parameters:
- [in, out] m affine transfrom[in] angle angle (radians)[in] axis axis
-
void
glm_rotate_at
(mat4 m, vec3 pivot, float angle, vec3 axis)¶ rotate existing transform around given axis by angle at given pivot point (rotation center)
- Parameters:
- [in, out] m affine transfrom[in] pivot pivot, anchor point, rotation center[in] angle angle (radians)[in] axis axis
-
void
glm_rotate_atm
(mat4 m, vec3 pivot, float angle, vec3 axis)¶ - creates NEW rotation matrix by angle and axis at given pointthis creates rotation matrix, it assumes you don’t have a matrixthis should work faster than glm_rotate_at because it reduces one glm_translate.
- Parameters:
- [in, out] m affine transfrom[in] pivot pivot, anchor point, rotation center[in] angle angle (radians)[in] axis axis
-
void
glm_decompose_scalev
(mat4 m, vec3 s)¶ decompose scale vector
- Parameters:
- [in] m affine transform[out] s scale vector (Sx, Sy, Sz)
-
bool
glm_uniscaled
(mat4 m)¶ returns true if matrix is uniform scaled. This is helpful for creating normal matrix.
- Parameters:
- [in] m matrix
-
void
glm_decompose_rs
(mat4 m, mat4 r, vec3 s)¶ decompose rotation matrix (mat4) and scale vector [Sx, Sy, Sz] DON’T pass projected matrix here
- Parameters:
- [in] m affine transform[out] r rotation matrix[out] s scale matrix
-
void
glm_decompose
(mat4 m, vec4 t, mat4 r, vec3 s)¶ decompose affine transform, TODO: extract shear factors. DON’T pass projected matrix here
- Parameters:
- [in] m affine transfrom[out] t translation vector[out] r rotation matrix (mat4)[out] s scaling vector [X, Y, Z]
-
void
glm_spin
(mat4 m, float angle, vec3 axis)¶ - rotate existing transform matrix around given axis by angle around self (doesn’t affected by position)
- Parameters:
- [in, out] m affine transfrom[in] angle angle (radians)[in] axis axis