mat4 scale(float x, float y, float z)
{
return mat4(
x,0,0,0,
0,y,0,0,
0,0,z,0,
0,0,0,1
);
}
mat4 translate(float x, float y, float z)
{
return mat4(
1,0,0,0,
0,1,0,0,
0,0,1,0,
x,y,z,1
);
}
{
return mat4(
1,0,0,0,
0,1,0,0,
0,0,1,0,
x,y,z,1
);
}
mat4 rotate(float x, float y, float z, float angle)
{
float cos0 = cos(-angle);
float sin0 = sin(-angle);
float t = 1.0f - cos0;
{
float cos0 = cos(-angle);
float sin0 = sin(-angle);
float t = 1.0f - cos0;
float txx = t * x * x;
float txy = t * x * y;
float txz = t * x * z;
float tyy = t * y * y;
float tyz = t * y * z;
float tzz = t * z * z;
float txy = t * x * y;
float txz = t * x * z;
float tyy = t * y * y;
float tyz = t * y * z;
float tzz = t * z * z;
float sinx = sin0 * x;
float siny = sin0 * y;
float sinz = sin0 * z;
return mat4(
txx+cos0,txy-sinz,txz+siny,0,
txy+sinz,tyy+cos0,tyz-sinx,0,
txz-siny,tyz+sinx,tzz+cos0,0,
0,0,0,1
);
}
float siny = sin0 * y;
float sinz = sin0 * z;
return mat4(
txx+cos0,txy-sinz,txz+siny,0,
txy+sinz,tyy+cos0,tyz-sinx,0,
txz-siny,tyz+sinx,tzz+cos0,0,
0,0,0,1
);
}