9 #import "MasMatrixUtil.h" 13 + (matrix_float4x4) makeMatrix:(
float*) data {
14 return (matrix_float4x4){ { { data[0], data[1], data[2], data[3] }, { data[4], data[5], data[6], data[7] }, { data[8], data[9], data[10], data[11]}, { data[12], data[13], data[14], data[15] } } };
17 + (matrix_float4x4) translation:(
float)x y:(
float)y z:(
float)z {
18 vector_float4 translationVector = {x, y, z, 1};
19 matrix_float4x4 matrixTranslation = matrix_identity_float4x4;
20 matrixTranslation.columns[3] = translationVector;
21 return matrixTranslation;
24 + (matrix_float4x4) translate:(
float)x positionY:(
float)y positionZ:(
float)z matrix:(matrix_float4x4)matrix {
25 return matrix_identity_float4x4;
28 + (matrix_float4x4) rotation:(
float)x y:(
float)y z:(
float)z {
29 matrix_float4x4 matrixRotation = [
MasMatrixUtil rotationAroundX:x];
31 matrixRotation = matrix_multiply(matrixRotation, [
MasMatrixUtil rotationAroundY:y]);
32 matrixRotation = matrix_multiply(matrixRotation, [
MasMatrixUtil rotationAroundZ:z]);
34 return matrixRotation;
37 + (matrix_float4x4) rotate:(
float)x y:(
float)y z:(
float)z matrix:(matrix_float4x4)matrix {
38 return matrix_identity_float4x4;
41 + (matrix_float4x4) scale:(
float)x y:(
float)y z:(
float)z {
43 matrix_float4x4 matrixScale = matrix_identity_float4x4;
45 matrixScale.columns[0].x = x;
46 matrixScale.columns[1].y = y;
47 matrixScale.columns[2].z = z;
52 + (matrix_float4x4) rotationAroundZ:(
float)radians {
53 matrix_float4x4 rotationMatrix = matrix_identity_float4x4;
55 rotationMatrix.columns[0].x = cos(radians);
56 rotationMatrix.columns[0].y = sin(radians);
58 rotationMatrix.columns[1].x = -sin(radians);
59 rotationMatrix.columns[1].y = cos(radians);
61 return rotationMatrix;
64 + (matrix_float4x4) rotationAroundY:(
float)radians {
65 matrix_float4x4 rotationMatrix = matrix_identity_float4x4;
67 rotationMatrix.columns[0].x = cos(radians);
68 rotationMatrix.columns[0].z = -sin(radians);
70 rotationMatrix.columns[2].x = sin(radians);
71 rotationMatrix.columns[2].z = cos(radians);
73 return rotationMatrix;
76 + (matrix_float4x4) rotationAroundX:(
float)radians {
77 matrix_float4x4 rotationMatrix = matrix_identity_float4x4;
79 rotationMatrix.columns[1].y = cos(radians);
80 rotationMatrix.columns[1].z = sin(radians);
82 rotationMatrix.columns[2].y = -sin(radians);
83 rotationMatrix.columns[2].z = cos(radians);
85 return rotationMatrix;
88 + (const
float *) floatArrayForMatrix:(matrix_float4x4)mat
90 const float *v = (
const float *)&mat;