diff --git a/src/surface.c b/src/surface.c index 7e44329..a056bd3 100644 --- a/src/surface.c +++ b/src/surface.c @@ -117,10 +117,17 @@ void norm(const float *v1, float *result, unsigned char n) static void __calculate_normal( float *p1, float *p2, float *p3, float *normal, unsigned char n) { - float **u; + unsigned char i; float alpha; - vec4 v1, v2, v3; - vec4 u1, u2, u3; + float *v1, *v2, *v3; + float *u1, *u2, *u3; + + v1=malloc(n*sizeof(float)); + v2=malloc(n*sizeof(float)); + v3=malloc(n*sizeof(float)); + u1=malloc(n*sizeof(float)); + u2=malloc(n*sizeof(float)); + u3=malloc(n*sizeof(float)); switch (n) { @@ -131,18 +138,23 @@ static void __calculate_normal( glm_vec3_cross(v1, v2, normal); glm_vec3_normalize(normal); return; -#if 0 /* In Grant-Shmidth we need 3 linearly independian vector that forms a basis, so we can have a ortonormal version of that basis, since, we must have v1 = p3 - p1 v2 = p2 - p1 Then v3 = p1, will most certantly be linerly independiant to v1 and v2. */ - case 4: - glm_vec4_sub(p2, p1, v1); - glm_vec4_sub(p3, p1, v2); - glm_vec4_copy(p1, v3); - glm_vec4_copy(v1, u1); + default: + for( i=0; i