#include "sweet_types.h" #include "sweet_matrix_short.h" mat2 mat2_new_m3 (mat3 m) { mat2 n; n.v[0] = m.v[0]; n.v[1] = m.v[1]; n.v[2] = m.v[3]; n.v[3] = m.v[4]; return n; } mat2 mat2_new_2v (vec2 e1, vec2 e2) { mat2 m; m.v[0] = e1.x; m.v[1] = e1.y; m.v[2] = e2.x; m.v[3] = e2.y; return m; } mat2 mat2_new_3f (float a, float b, float c) { return mat2_new_4f (a, b, c, 0); } mat2 mat2_new_4f (float f0, float f1, float f2, float f3) { mat2 n; n.v[0] = f0; n.v[1] = f1; n.v[2] = f2; n.v[3] = f3; return n; } mat3 mat3_new_m4 (mat4 m) { mat3 n; n.v[0] = m.v[0]; n.v[1] = m.v[1]; n.v[2] = m.v[2]; n.v[3] = m.v[4]; n.v[4] = m.v[5]; n.v[5] = m.v[6]; n.v[6] = m.v[8]; n.v[7] = m.v[9]; n.v[8] = m.v[10]; return n; } mat3 mat3_new_2v (vec2 e1, vec2 e2) { mat3 m; m.v[0] = e1.x; m.v[1] = e1.y; m.v[2] = 0; m.v[3] = e2.x; m.v[4] = e2.y; m.v[5] = 0; m.v[6] = 0; m.v[7] = 0; m.v[8] = 1; return m; } mat3 mat3_new_3v (vec3 e1, vec3 e2, vec3 e3) { mat3 m; m.v[0] = e1.x; m.v[1] = e1.y; m.v[2] = e1.z; m.v[3] = e2.x; m.v[4] = e2.y; m.v[5] = e2.z; m.v[6] = e3.x; m.v[7] = e3.y; m.v[8] = e3.z; return m; } mat4 mat4_new_m4 (mat4 m) { return m; } mat4 mat4_new_2v (vec2 e1, vec2 e2) { mat4 m; m.v[0] = e1.x; m.v[1] = e1.y; m.v[2] = 0; m.v[3] = 0; m.v[4] = e2.x; m.v[5] = e2.y; m.v[6] = 0; m.v[7] = 0; m.v[8] = 0; m.v[9] = 0; m.v[10] = 1; m.v[11] = 0; m.v[12] = 0; m.v[13] = 0; m.v[14] = 0; m.v[15] = 1; return m; } mat4 mat4_new_3v (vec3 e1, vec3 e2, vec3 e3) { mat4 m; m.v[0] = e1.x; m.v[1] = e1.y; m.v[2] = e1.z; m.v[3] = 0; m.v[4] = e2.x; m.v[5] = e2.y; m.v[6] = e2.z; m.v[7] = 0; m.v[8] = e3.x; m.v[9] = e3.y; m.v[10] = e3.z; m.v[11] = 0; m.v[12] = 0; m.v[13] = 0; m.v[14] = 0; m.v[15] = 1; return m; } mat4 mat4_new_4v (vec4 e1, vec4 e2, vec4 e3, vec4 e4) { mat4 m; m.v[0] = e1.x; m.v[1] = e1.y; m.v[2] = e1.z; m.v[3] = e1.w; m.v[4] = e2.x; m.v[5] = e2.y; m.v[6] = e2.z; m.v[7] = e2.w; m.v[8] = e3.x; m.v[9] = e3.y; m.v[10] = e3.z; m.v[11] = e3.w; m.v[12] = e4.x; m.v[13] = e4.y; m.v[14] = e4.z; m.v[15] = e4.w; return m; }