diff --git a/Makefile b/Makefile index 3ea3d4b..f19225f 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,6 @@ OBJ = \ src/shader.o \ src/input.o \ src/mesh.o \ - src/alan.o \ src/main.o CFLAGS = \ diff --git a/src/data/cube.h b/src/data/cube.h index 234b58e..3769b79 100644 --- a/src/data/cube.h +++ b/src/data/cube.h @@ -33,7 +33,7 @@ narray_float_t d_cube = }; -narray_float_t d_cube = +narray_float_t n_cube = { 3 * 3 * 2 * 6, @@ -54,4 +54,4 @@ narray_float_t d_cube = A B E B E F -}; \ No newline at end of file +}; diff --git a/src/main.c b/src/main.c index d0d8c4b..0872456 100644 --- a/src/main.c +++ b/src/main.c @@ -16,22 +16,30 @@ unsigned char palette[] = 0x7A,0x1C,0xAC,0xff, }; -void calc_normal(float* v1, float* v2, float* v3, float* norm_vec) +void calc_normal(float* v1, float* v2, float* v3, float* normal) { - vec3 lado1, lado2, normal; + vec3 lado1, lado2; glm_vec3_sub(v2, v1, lado1); glm_vec3_sub(v3, v1, lado2); glm_vec3_cross(lado1, lado2, normal); glm_vec3_normalize(normal); - - //para menos p2, ahora lo guarda en norm_vec - norm_vec[0] = normal[0]; - norm_vec[1] = normal[1]; - norm_vec[2] = normal[2]; } +void fill_normal( float * d, float * n ) +{ + *n = *d; + for (int i = 0; i < *d; i += 9) + { + + vec3 norm_vec; + calc_normal((d+1)+i, (d+1)+i+3, (d+1)+i+6, norm_vec); + glm_vec3_copy( norm_vec, (n+1)+i ); + glm_vec3_copy( norm_vec, (n+1)+i+3 ); + glm_vec3_copy( norm_vec, (n+1)+i+6 ); + } +} const char * wname = "manigraph: manifold grapher"; @@ -49,17 +57,8 @@ int main( void ) glewInit(); - //nostoy seguro de como escribir esto en cube.h, pero supongo que lo que me decias era así. - for (int i = 0; i < 3 * 3 * 2 * 6; i += 9) { - float* v1 = &d_cube[i]; - float* v2 = &d_cube[i + 3]; - float* v3 = &d_cube[i + 6]; - float norm_vec[3]; - calc_normal(v1, v2, v3, norm_vec); - n_cube[i] = norm_vec[0]; - n_cube[i + 1] = norm_vec[1]; - n_cube[i + 2] = norm_vec[2]; - } + + fill_normal( d_cube, n_cube ); if( !( shader = create_shader() ) ) goto error_shader;