-
-
Notifications
You must be signed in to change notification settings - Fork 0
Matrix4_Projection_orig
Kion edited this page Sep 16, 2017
·
1 revision
- mat4_look_at
- mat4_perspective
void mat4_look_at(vec3 eye, vec3 center, vec3 up, mat4 m) {
mat4 a;
vec3 f, s, t;
vec3_subtract(center, eye, f);
vec3_normalize(f, f);
vec3_cross_multiply(f, up, s);
vec3_normalize(s, s);
vec3_cross_multiply(s, f, t);
m[M_00] = s[0];
m[M_10] = t[0];
m[M_20] =-f[0];
m[M_30] = 0.0f;
m[M_01] = s[1];
m[M_11] = t[1];
m[M_21] =-f[1];
m[M_31] = 0.0f;
m[M_02] = s[2];
m[M_12] = t[2];
m[M_22] = -f[2];
m[M_32] = 0.0f;
m[M_03] = 0.0f;
m[M_13] = 0.0f;
m[M_23] = 0.0f;
m[M_33] = 1.0f;
eye[0] = -eye[0];
eye[1] = -eye[1];
eye[2] = -eye[2];
mat4_translate(eye, a);
mat4_multiply(m, a, m);
}
void mat4_perspective(float y_fov, float aspect, float n, float f, mat4 m) {
float const a = 1.f / (float) tan(y_fov / 2.f);
m[M_00] = a / aspect;
m[M_10] = 0.0f;
m[M_20] = 0.0f;
m[M_30] = 0.0f;
m[M_01] = 0.0f;
m[M_11] = a;
m[M_21] = 0.0f;
m[M_31] = 0.0f;
m[M_02] = 0.0f;
m[M_12] = 0.0f;
m[M_22] = -((f + n) / (f - n));
m[M_32] = -1.0f;
m[M_03] = 0.0f;
m[M_13] = 0.0f;
m[M_23] = -((2.0f * f * n) / (f - n));
m[M_33] = 0.0f;
}