Add function to multiply 4x4 matrix by 4D vector
This commit is contained in:
parent
7823e92861
commit
44c7b6ac1b
@ -128,6 +128,7 @@ mat4x4f_t get_scaling_matrix(vec3f_t scale);
|
|||||||
mat3x3f_t get_rotation_mat3x3f(vec3f_t rotation);
|
mat3x3f_t get_rotation_mat3x3f(vec3f_t rotation);
|
||||||
vec3f_t mul_mat3x4f_by_vec4f(mat3x4f_t mat, vec4f_t vec);
|
vec3f_t mul_mat3x4f_by_vec4f(mat3x4f_t mat, vec4f_t vec);
|
||||||
mat3x4f_t mul_mat3x4f_by_mat4x4f(mat3x4f_t mat1, mat4x4f_t mat2);
|
mat3x4f_t mul_mat3x4f_by_mat4x4f(mat3x4f_t mat1, mat4x4f_t mat2);
|
||||||
|
vec4f_t mul_mat4x4f_by_vec4f(mat4x4f_t mat, vec4f_t vec);
|
||||||
mat4x4f_t mul_mat4x4f(mat4x4f_t mat1, mat4x4f_t mat2);
|
mat4x4f_t mul_mat4x4f(mat4x4f_t mat1, mat4x4f_t mat2);
|
||||||
|
|
||||||
#endif // !VEC_H
|
#endif // !VEC_H
|
||||||
|
@ -342,6 +342,19 @@ mat3x4f_t mul_mat3x4f_by_mat4x4f(mat3x4f_t mat1, mat4x4f_t mat2) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec4f_t mul_mat4x4f_by_vec4f(mat4x4f_t mat, vec4f_t vec) {
|
||||||
|
f32 x = mat.row0.x * vec.x + mat.row0.y * vec.y + mat.row0.z * vec.z +
|
||||||
|
mat.row0.w * vec.w;
|
||||||
|
f32 y = mat.row1.x * vec.x + mat.row1.y * vec.y + mat.row1.z * vec.z +
|
||||||
|
mat.row1.w * vec.w;
|
||||||
|
f32 z = mat.row2.x * vec.x + mat.row2.y * vec.y + mat.row2.z * vec.z +
|
||||||
|
mat.row2.w * vec.w;
|
||||||
|
f32 w = mat.row3.x * vec.x + mat.row3.y * vec.y + mat.row3.z * vec.z +
|
||||||
|
mat.row3.w * vec.w;
|
||||||
|
|
||||||
|
return (vec4f_t){x, y, z, w};
|
||||||
|
}
|
||||||
|
|
||||||
mat4x4f_t mul_mat4x4f(mat4x4f_t mat1, mat4x4f_t mat2) {
|
mat4x4f_t mul_mat4x4f(mat4x4f_t mat1, mat4x4f_t mat2) {
|
||||||
f32 row0_col0 = mat1.row0.x * mat2.row0.x + mat1.row0.y * mat2.row1.x +
|
f32 row0_col0 = mat1.row0.x * mat2.row0.x + mat1.row0.y * mat2.row1.x +
|
||||||
mat1.row0.z * mat2.row2.x + mat1.row0.w * mat2.row3.x;
|
mat1.row0.z * mat2.row2.x + mat1.row0.w * mat2.row3.x;
|
||||||
|
Loading…
Reference in New Issue
Block a user