Fix size with variable grid

This commit is contained in:
PedroEdiaz
2024-12-01 13:43:27 -06:00
parent 0729388291
commit a293008137

View File

@@ -39,7 +39,7 @@ int factorial(int n)
return n * factorial(n - 1); return n * factorial(n - 1);
} }
int numero_caras(int n) int faces(int n)
{ {
if (n == 2) if (n == 2)
return 1; 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) float *generate_data_surface(unsigned char *dim, unsigned long *vertex)
{ {
unsigned int i, j, k, o, p, n; unsigned int i, j, k, o, p, n;
long size, q = 0; unsigned long size, q = 0;
float *d_surface; float *d_surface;
int *cara; int *cara;
parm.f = mobius; parm.f = cube;
parm.m = 2; parm.m = 5;
parm.n = 3; parm.n = 5;
parm.grid = (char[2]){16, 2}; parm.grid = (char[7]){16, 2, 8, 4, 3, 5, 1};
#ifdef TEST #ifdef TEST
assert(numero_caras(2) == 1); assert(faces(2) == 1);
assert(numero_caras(3) == 6); assert(faces(3) == 6);
assert(numero_caras(4) == 24); assert(faces(4) == 24);
#endif #endif
*dim = parm.n; *dim = parm.n;
*vertex = 0; *vertex = 0;
{
unsigned char test = 0;
for (o = 0; o < parm.m; o++) for (o = 0; o < parm.m; o++)
{
for (p = 0; p < o; p++) for (p = 0; p < o; p++)
*vertex += parm.grid[p] * parm.grid[o] * 6; {
test += 1;
*vertex += parm.grid[p] * parm.grid[o] * 6 * faces(parm.n);
}
}
*vertex /= test;
}
cara = malloc(parm.m * sizeof(int)); cara = malloc(parm.m * sizeof(int));
size = (*dim) * (*vertex); size = (*dim) * (*vertex);
@@ -186,6 +195,7 @@ float *generate_data_surface(unsigned char *dim, unsigned long *vertex)
} }
} }
} }
#ifdef TEST #ifdef TEST
assert(q == size); assert(q == size);
#endif #endif