diff --git a/src/surface.c b/src/surface.c index a056bd3..e505f2f 100644 --- a/src/surface.c +++ b/src/surface.c @@ -82,167 +82,101 @@ float *generate_data_surface(int grid_size, unsigned char *m) return d_surface; } -/* pa' rearmar la funcion _calc_normal te entendi que creara las funciones de cglm artesanalmente, entonces ps eso hago xd */ - -void subtract(const float *v1, const float *v2, float *result, unsigned char n) -{ - for (unsigned char i = 0; i < n; i++) { - result[i] = v1[i] - v2[i]; - } -} - -float dot_product(const float *a, const float *b, unsigned char n) -{ - float result = 0.0f; - for (unsigned char i = 0; i < n; i++) { - result += a[i] * b[i]; - } - return result; -} - -void escalar_product(float a, const float *v1, float *result, unsigned char n) -{ - for (unsigned char i = 0; i < n; i++) { - result[i] = a * v1[i]; - } -} - -void norm(const float *v1, float *result, unsigned char n) -{ - float lenght = sqrtf(dot_product(v1, v1, n)); - float inv_lenght = 1.0f / lenght; - escalar_product(inv_lenght, v1, result, n); -} - static void __calculate_normal( - float *p1, float *p2, float *p3, float *normal, unsigned char n) + float *p1, float *p2, float *p3, float *normal, unsigned char n) { - unsigned char i; - float alpha; - float *v1, *v2, *v3; - float *u1, *u2, *u3; + unsigned char i; + float alpha; + 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)); + 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) - { - case 3: - glm_vec3_sub(p2, p1, v1); - glm_vec3_sub(p3, p1, v2); + switch (n) + { + case 3: + glm_vec3_sub(p2, p1, v1); + glm_vec3_sub(p3, p1, v2); - glm_vec3_cross(v1, v2, normal); - glm_vec3_normalize(normal); - return; - /* - 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. - */ - default: - for( i=0; i