Ya deberia funcionar n==4, pero por alguna razon no corre con make run, iura
This commit is contained in:
40
src/main.c
40
src/main.c
@@ -22,9 +22,8 @@ unsigned char palette[] =
|
||||
|
||||
void calc_normal(float* v1, float* v2, float* v3,float* normal, unsigned char n)
|
||||
{
|
||||
float alpha;
|
||||
vec4 lado1, lado2;
|
||||
vec4 u1, u2, proy;
|
||||
vec4 lado1, lado2, lado3;
|
||||
vec4 u1, u2, u3;
|
||||
|
||||
switch (n)
|
||||
{
|
||||
@@ -38,19 +37,34 @@ void calc_normal(float* v1, float* v2, float* v3,float* normal, unsigned char n)
|
||||
return;
|
||||
|
||||
case 4:
|
||||
#if 0
|
||||
glm_vec4_sub(v2, v1, lado1);
|
||||
glm_vec4_sub(v3, v1, lado2);
|
||||
|
||||
glm_vec4_copy(lado1, u1);
|
||||
glm_vec4_sub(v2, v1, lado1);
|
||||
glm_vec4_sub(v3, v1, lado2);
|
||||
glm_vec4_sub(v2, v1, lado3);
|
||||
|
||||
glm_vec4_copy(lado1, u1);
|
||||
|
||||
alpha = glm_vec4_dot(lado2, u1) / glm_vec4_dot(u1, u1);
|
||||
glm_vec4_scale(u1, alpha, proy);
|
||||
glm_vec4_sub(lado2, proy, u2);
|
||||
float alpha = glm_vec4_dot(lado2, u1) / glm_vec4_dot(u1, u1);
|
||||
vec4 proj_u1;
|
||||
glm_vec4_scale(u1, alpha, proj_u1);
|
||||
glm_vec4_sub(lado2, proj_u1, u2);
|
||||
|
||||
glm_vec4_normalize(u2);
|
||||
glm_vec4_copy(u2, normal);
|
||||
#endif
|
||||
glm_vec4_normalize(u2);
|
||||
|
||||
float beta = glm_vec4_dot(lado3, u1) / glm_vec4_dot(u1, u1);
|
||||
vec4 proj_u1_lado3;
|
||||
glm_vec4_scale(u1, beta, proj_u1_lado3);
|
||||
|
||||
float gamma = glm_vec4_dot(lado3, u2) / glm_vec4_dot(u2, u2);
|
||||
vec4 proj_u2;
|
||||
glm_vec4_scale(u2, gamma, proj_u2);
|
||||
|
||||
glm_vec4_sub(lado3, proj_u1_lado3, u3);
|
||||
glm_vec4_sub(u3, proj_u2, u3);
|
||||
|
||||
glm_vec4_normalize(u3);
|
||||
|
||||
glm_vec4_copy(u3, normal);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user