la funcion calc_normal ahora toma vectores R4 via alg. G-S
This commit is contained in:
36
src/main.c
36
src/main.c
@@ -18,15 +18,39 @@ unsigned char palette[] =
|
|||||||
0x7A,0x1C,0xAC,0xff,
|
0x7A,0x1C,0xAC,0xff,
|
||||||
};
|
};
|
||||||
|
|
||||||
void calc_normal(float* v1, float* v2, float* v3, float* normal)
|
void calc_normal(float* v1, float* v2, float* v3, , float* v4 ,float* normal, unsigned char n)
|
||||||
{
|
{
|
||||||
vec3 lado1, lado2;
|
vec4 lado1, lado2;
|
||||||
|
vec4 u1, u2;
|
||||||
|
|
||||||
|
switch (n)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
|
||||||
glm_vec3_sub(v2, v1, lado1);
|
glm_vec3_sub(v2, v1, lado1);
|
||||||
glm_vec3_sub(v3, v1, lado2);
|
glm_vec3_sub(v3, v1, lado2);
|
||||||
|
|
||||||
glm_vec3_cross(lado1, lado2, normal);
|
glm_vec3_cross(lado1, lado2, normal);
|
||||||
glm_vec3_normalize(normal);
|
glm_vec3_normalize(normal);
|
||||||
|
return;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
glm_vec4_sub(v2, v1, lado1);
|
||||||
|
glm_vec4_sub(v3, v1, lado2);
|
||||||
|
|
||||||
|
glm_vec4_copy(lado1, u1);
|
||||||
|
|
||||||
|
float alfa = glm_vec4_dot(lado2, u1) / glm_vec4_dot(u1, u1);
|
||||||
|
vec4 proy;
|
||||||
|
glm_vec4_scale(u1, alfa, proy);
|
||||||
|
glm_vec4_sub(lado2, proy, u2);
|
||||||
|
|
||||||
|
glm_vec4_normalize(u2);
|
||||||
|
glm_vec4_copy(u2, normal);
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float * fill_normal( float * d )
|
float * fill_normal( float * d )
|
||||||
|
|||||||
Reference in New Issue
Block a user