commit 55c89555acfa2b6694100b6a1df22bfa38acd191
parent 3d921b9005d67438f71884181cf4059fb4b07551
Author: Brian Swetland <swetland@frotz.net>
Date: Sun, 20 Jan 2013 12:57:21 -0800
add mtx_?_rotation() functions to create rotation matrices
Diffstat:
2 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/util.c b/util.c
@@ -70,8 +70,7 @@ void mtx_translate(mat4 m, float x, float y, float z) {
m[3][3] += (m[0][3] * x + m[1][3] * y + m[2][3] * z);
}
-void mtx_rotate_x(mat4 m, float angle) {
- mat4 r;
+void mtx_x_rotation(mat4 r, float angle) {
float sa,ca;
angle = angle * M_PI / 180.0;
sa = sinf(angle);
@@ -83,11 +82,9 @@ void mtx_rotate_x(mat4 m, float angle) {
r[2][1] = sa;
r[2][2] = ca;
r[3][3] = 1;
- mtx_mul(m, r, m);
}
-void mtx_rotate_y(mat4 m, float angle) {
- mat4 r;
+void mtx_y_rotation(mat4 r, float angle) {
float sa,ca;
angle = angle * M_PI / 180.0;
sa = sinf(angle);
@@ -99,11 +96,9 @@ void mtx_rotate_y(mat4 m, float angle) {
r[2][0] = -sa;
r[2][2] = ca;
r[3][3] = 1;
- mtx_mul(m, r, m);
}
-void mtx_rotate_z(mat4 m, float angle) {
- mat4 r;
+void mtx_z_rotation(mat4 r, float angle) {
float sa,ca;
angle = angle * M_PI / 180.0;
sa = sinf(angle);
@@ -115,6 +110,23 @@ void mtx_rotate_z(mat4 m, float angle) {
r[1][1] = ca;
r[2][2] = 1;
r[3][3] = 1;
+}
+
+void mtx_rotate_x(mat4 m, float angle) {
+ mat4 r;
+ mtx_x_rotation(r, angle);
+ mtx_mul(m, r, m);
+}
+
+void mtx_rotate_y(mat4 m, float angle) {
+ mat4 r;
+ mtx_y_rotation(r, angle);
+ mtx_mul(m, r, m);
+}
+
+void mtx_rotate_z(mat4 m, float angle) {
+ mat4 r;
+ mtx_z_rotation(r, angle);
mtx_mul(m, r, m);
}
diff --git a/util.h b/util.h
@@ -37,6 +37,11 @@ void mtx_rotate_x(mat4 out, float angle);
void mtx_rotate_y(mat4 out, float angle);
void mtx_rotate_z(mat4 out, float angle);
+/* initializes matrix out to the transform */
+void mtx_x_rotation(mat4 out, float angle);
+void mtx_y_rotation(mat4 out, float angle);
+void mtx_z_rotation(mat4 out, float angle);
+
/* GLU-style perspective matrix helper functions */
void mtx_ortho(mat4 out,
float left, float right,