63 lines
2.3 KiB
C
63 lines
2.3 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* mat4_rotate.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: gbrochar <gbrochar@student.42.fr> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2020/12/24 12:24:54 by gbrochar #+# #+# */
|
|
/* Updated: 2020/12/24 12:32:22 by gbrochar ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "mat4.h"
|
|
|
|
t_mat4 mat4_rotatex(t_mat4 m, double theta)
|
|
{
|
|
double s = sin(theta);
|
|
double c = cos(theta);
|
|
t_mat4 ret;
|
|
|
|
ret.data[0] = m.data[0];
|
|
ret.data[1] = m.data[1];
|
|
ret.data[2] = m.data[2];
|
|
ret.data[3] = m.data[3];
|
|
ret.data[4] = m.data[4] * c + m.data[8] * s;
|
|
ret.data[5] = m.data[5] * c + m.data[9] * s;
|
|
ret.data[6] = m.data[6] * c + m.data[10] * s;
|
|
ret.data[7] = m.data[7] * c + m.data[11] * s;
|
|
ret.data[8] = m.data[8] * c - m.data[4] * s;
|
|
ret.data[9] = m.data[9] * c - m.data[5] * s;
|
|
ret.data[10] = m.data[10] * c - m.data[6] * s;
|
|
ret.data[11] = m.data[11] * c - m.data[7] * s;
|
|
ret.data[12] = m.data[12];
|
|
ret.data[13] = m.data[13];
|
|
ret.data[14] = m.data[14];
|
|
ret.data[15] = m.data[15];
|
|
return (ret);
|
|
}
|
|
|
|
t_mat4 mat4_rotatey(t_mat4 m, double theta)
|
|
{
|
|
double s = sin(theta);
|
|
double c = cos(theta);
|
|
t_mat4 ret;
|
|
|
|
ret.data[0] = m.data[0] * c - m.data[8] * s;
|
|
ret.data[1] = m.data[1] * c - m.data[9] * s;
|
|
ret.data[2] = m.data[2] * c - m.data[10] * s;
|
|
ret.data[3] = m.data[3] * c - m.data[11] * s;
|
|
ret.data[4] = m.data[4];
|
|
ret.data[5] = m.data[5];
|
|
ret.data[6] = m.data[6];
|
|
ret.data[7] = m.data[7];
|
|
ret.data[8] = m.data[8] * c + m.data[0] * s;
|
|
ret.data[9] = m.data[9] * c + m.data[1] * s;
|
|
ret.data[10] = m.data[10] * c + m.data[2] * s;
|
|
ret.data[11] = m.data[11] * c + m.data[3] * s;
|
|
ret.data[12] = m.data[12];
|
|
ret.data[13] = m.data[13];
|
|
ret.data[14] = m.data[14];
|
|
ret.data[15] = m.data[15];
|
|
return (ret);
|
|
} |