From a2930081375c1e4c7052e3ca762d08097d36c346 Mon Sep 17 00:00:00 2001 From: PedroEdiaz Date: Sun, 1 Dec 2024 13:43:27 -0600 Subject: [PATCH] Fix size with variable grid --- src/surface.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/surface.c b/src/surface.c index fbdaf1b..7aeaf4e 100644 --- a/src/surface.c +++ b/src/surface.c @@ -39,7 +39,7 @@ int factorial(int n) return n * factorial(n - 1); } -int numero_caras(int n) +int faces(int n) { if (n == 2) return 1; @@ -107,27 +107,36 @@ void klein(float *d_surface, int *coord, unsigned char *grid) float *generate_data_surface(unsigned char *dim, unsigned long *vertex) { unsigned int i, j, k, o, p, n; - long size, q = 0; + unsigned long size, q = 0; float *d_surface; int *cara; - parm.f = mobius; - parm.m = 2; - parm.n = 3; - parm.grid = (char[2]){16, 2}; + parm.f = cube; + parm.m = 5; + parm.n = 5; + parm.grid = (char[7]){16, 2, 8, 4, 3, 5, 1}; #ifdef TEST - assert(numero_caras(2) == 1); - assert(numero_caras(3) == 6); - assert(numero_caras(4) == 24); + assert(faces(2) == 1); + assert(faces(3) == 6); + assert(faces(4) == 24); #endif *dim = parm.n; *vertex = 0; - for (o = 0; o < parm.m; o++) - for (p = 0; p < o; p++) - *vertex += parm.grid[p] * parm.grid[o] * 6; + { + unsigned char test = 0; + for (o = 0; o < parm.m; o++) + { + for (p = 0; p < o; p++) + { + test += 1; + *vertex += parm.grid[p] * parm.grid[o] * 6 * faces(parm.n); + } + } + *vertex /= test; + } cara = malloc(parm.m * sizeof(int)); size = (*dim) * (*vertex); @@ -186,6 +195,7 @@ float *generate_data_surface(unsigned char *dim, unsigned long *vertex) } } } + #ifdef TEST assert(q == size); #endif