From e79c4abe83e1e3a26e573a883f126708ae6f3813 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 18 Oct 2024 18:35:21 -0600 Subject: [PATCH] la funcion calc_normal ahora toma vectores R4 via alg. G-S --- src/main.c | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main.c b/src/main.c index 2f6f8a4..535fbd7 100755 --- a/src/main.c +++ b/src/main.c @@ -18,15 +18,39 @@ unsigned char palette[] = 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(v3, v1, lado2); + glm_vec3_sub(v2, v1, lado1); + glm_vec3_sub(v3, v1, lado2); - glm_vec3_cross(lado1, lado2, normal); - glm_vec3_normalize(normal); + glm_vec3_cross(lado1, lado2, 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 )