/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* mat4_mul.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: gbrochar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/12/23 10:39:09 by gbrochar #+# #+# */ /* Updated: 2020/12/23 10:49:28 by gbrochar ### ########.fr */ /* */ /* ************************************************************************** */ #include "mat4.h" t_mat4 mat4_multiply(t_mat4 m, t_mat4 rhs) { t_mat4 out; out.data[0] = rhs.data[0] * m.data[0] + rhs.data[1] * m.data[4] + rhs.data[2] * m.data[8] + rhs.data[3] * m.data[12]; out.data[1] = rhs.data[0] * m.data[1] + rhs.data[1] * m.data[5] + rhs.data[2] * m.data[9] + rhs.data[3] * m.data[13]; out.data[2] = rhs.data[0] * m.data[2] + rhs.data[1] * m.data[6] + rhs.data[2] * m.data[10] + rhs.data[3] * m.data[14]; out.data[3] = rhs.data[0] * m.data[3] + rhs.data[1] * m.data[7] + rhs.data[2] * m.data[11] + rhs.data[3] * m.data[15]; out.data[4] = rhs.data[4] * m.data[0] + rhs.data[5] * m.data[4] + rhs.data[6] * m.data[8] + rhs.data[7] * m.data[12]; out.data[5] = rhs.data[4] * m.data[1] + rhs.data[5] * m.data[5] + rhs.data[6] * m.data[9] + rhs.data[7] * m.data[13]; out.data[6] = rhs.data[4] * m.data[2] + rhs.data[5] * m.data[6] + rhs.data[6] * m.data[10] + rhs.data[7] * m.data[14]; out.data[7] = rhs.data[4] * m.data[3] + rhs.data[5] * m.data[7] + rhs.data[6] * m.data[11] + rhs.data[7] * m.data[15]; out.data[8] = rhs.data[8] * m.data[0] + rhs.data[9] * m.data[4] + rhs.data[10] * m.data[8] + rhs.data[11] * m.data[12]; out.data[9] = rhs.data[8] * m.data[1] + rhs.data[9] * m.data[5] + rhs.data[10] * m.data[9] + rhs.data[11] * m.data[13]; out.data[10] = rhs.data[8] * m.data[2] + rhs.data[9] * m.data[6] + rhs.data[10] * m.data[10] + rhs.data[11] * m.data[14]; out.data[11] = rhs.data[8] * m.data[3] + rhs.data[9] * m.data[7] + rhs.data[10] * m.data[11] + rhs.data[11] * m.data[15]; out.data[12] = rhs.data[12] * m.data[0] + rhs.data[13] * m.data[4] + rhs.data[14] * m.data[8] + rhs.data[15] * m.data[12]; out.data[13] = rhs.data[12] * m.data[1] + rhs.data[13] * m.data[5] + rhs.data[14] * m.data[9] + rhs.data[15] * m.data[13]; out.data[14] = rhs.data[12] * m.data[2] + rhs.data[13] * m.data[6] + rhs.data[14] * m.data[10] + rhs.data[15] * m.data[14]; out.data[15] = rhs.data[12] * m.data[3] + rhs.data[13] * m.data[7] + rhs.data[14] * m.data[11] + rhs.data[15] * m.data[15]; return (out); }