diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-11-25 08:20:30 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-11-25 08:39:34 +0300 |
commit | e1e49fd1a8a5bca7f95ba230a7daf12fb059779b (patch) | |
tree | 9913ba1244a0904189361058713489666d64d2dc /source/blender/blenlib/intern | |
parent | d30a0239a2fb1bf28befc547d9c4986b6be4d662 (diff) |
Math Lib: rotate matrix cleanup
- Remove 'rotate_m2', unlike 'rotate_m4' it created a new matrix
duplicating 'angle_to_mat2' - now used instead.
(better avoid matching functions having different behavior).
- Add 'axis_angle_to_mat4_single',
convenience wrapper for 'axis_angle_to_mat3_single'.
- Replace 'unit_m4(), rotate_m4()' with a single call to 'axis_angle_to_mat4_single'.
Diffstat (limited to 'source/blender/blenlib/intern')
-rw-r--r-- | source/blender/blenlib/intern/math_geom.c | 3 | ||||
-rw-r--r-- | source/blender/blenlib/intern/math_matrix.c | 14 | ||||
-rw-r--r-- | source/blender/blenlib/intern/math_rotation.c | 7 |
3 files changed, 15 insertions, 9 deletions
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index f31d0935b77..0790d65345d 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -3917,10 +3917,9 @@ void lookat_m4(float mat[4][4], float vx, float vy, float vz, float px, float py float sine, cosine, hyp, hyp1, dx, dy, dz; float mat1[4][4]; - unit_m4(mat); unit_m4(mat1); - rotate_m4(mat, 'Z', -twist); + axis_angle_to_mat3_single(mat, 'Z', -twist); dx = px - vx; dy = py - vy; diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c index c9c61d5c878..7176686df54 100644 --- a/source/blender/blenlib/intern/math_matrix.c +++ b/source/blender/blenlib/intern/math_matrix.c @@ -1625,6 +1625,13 @@ void translate_m4(float mat[4][4], float Tx, float Ty, float Tz) mat[3][2] += (Tx * mat[0][2] + Ty * mat[1][2] + Tz * mat[2][2]); } +/** + * Rotate a matrix in-place. + * + * \note To create a new rotation matrix see: + * #axis_angle_to_mat4_single, #axis_angle_to_mat3_single, #angle_to_mat2 + * (axis & angle args are compatible). + */ void rotate_m4(float mat[4][4], const char axis, const float angle) { int col; @@ -1665,13 +1672,6 @@ void rotate_m4(float mat[4][4], const char axis, const float angle) } } -void rotate_m2(float mat[2][2], const float angle) -{ - mat[0][0] = mat[1][1] = cosf(angle); - mat[0][1] = sinf(angle); - mat[1][0] = -mat[0][1]; -} - /** * Scale or rotate around a pivot point, * a convenience function to avoid having to do inline. diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c index b285a74b8ac..9b5dad3f767 100644 --- a/source/blender/blenlib/intern/math_rotation.c +++ b/source/blender/blenlib/intern/math_rotation.c @@ -1009,6 +1009,13 @@ void mat4_to_axis_angle(float axis[3], float *angle, float mat[4][4]) quat_to_axis_angle(axis, angle, q); } +void axis_angle_to_mat4_single(float mat[4][4], const char axis, const float angle) +{ + float mat3[3][3]; + axis_angle_to_mat3_single(mat3, axis, angle); + copy_m4_m3(mat, mat3); +} + /* rotation matrix from a single axis */ void axis_angle_to_mat3_single(float mat[3][3], const char axis, const float angle) { |