expandiendo a Rn avance

This commit is contained in:
alan
2024-11-26 22:21:56 -06:00
parent e4a4a8c603
commit 805ff18e21

View File

@@ -77,7 +77,7 @@ void klein(float *d_surface, int * coord, int grid_size)
typedef void (*function_t)(float *, int *, int); typedef void (*function_t)(float *, int *, int);
float *generate_data_surface(int grid_size, unsigned char *m) /* float *generate_data_surface(int grid_size, unsigned char *m)
{ {
unsigned int i, j, k = 0; unsigned int i, j, k = 0;
long size; long size;
@@ -96,26 +96,110 @@ float *generate_data_surface(int grid_size, unsigned char *m)
for (j = 0; j < grid_size; j++) for (j = 0; j < grid_size; j++)
{ {
// triangle 1, Front // triangle 1, Front
f(&d_surface[k + 1], (int[2]){i, j}, grid_size); f(&d_surface[k + 1], &cara, grid_size);
k += *m; k += *m;
f(&d_surface[k + 1], (int[2]){i + 1, j}, grid_size); f(&d_surface[k + 1], &cara, j}, grid_size);
k += *m; k += *m;
f(&d_surface[k + 1], (int[2]){i + 1, j + 1}, grid_size); f(&d_surface[k + 1], &cara, j + 1}, grid_size);
k += *m; k += *m;
// triangle 2, Back // triangle 2, Back
f(&d_surface[k + 1], (int[2]){i, j}, grid_size); f(&d_surface[k + 1], &cara, grid_size);
k += *m; k += *m;
f(&d_surface[k + 1], (int[2]){i, j + 1}, grid_size); f(&d_surface[k + 1], &cara+ 1}, grid_size);
k += *m; k += *m;
f(&d_surface[k + 1], (int[2]){i + 1, j + 1}, grid_size); f(&d_surface[k + 1], &cara, j + 1}, grid_size);
k += *m; k += *m;
} }
} }
return d_surface;
} */
float *generate_data_surface(int grid_size, unsigned char *s)
{
unsigned int i, j, k, o, p, l, n, m, q = 0;
long size;
function_t f;
float *d_surface;
int dim = 2;
f = klein;
*s = 4;
int cara[2];
size = grid_size * grid_size * 2 * dim * (*s);
d_surface = malloc((size + 1) * sizeof(float));
d_surface[0] = size;
for(o = 0; o < dim; o ++)
{
for (p = o + 1; p < dim; p++)
{
for (k = 0; k < (1 << o); k++)
{
for(l = 0; l < (1 << p); l += (1 << (o + 1)))
{
for(m = 0; m < (1 << dim); m += (1 << (p + 1)))
{
for(n = 0; n < dim; n++)
{
if(((k + l + m) & (1 << n)) == 0)
{
if(n != o && n != p)
cara[n] = 0;
}
else
{
if(n != o && n != p)
cara[n] = 1;
}
for(i = 0; i < grid_size; i++)
{
cara[o] = i;
for (j = 0; j < grid_size; j++)
{
cara[p] = j;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
cara[o] = i + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
cara[o] = i + 1;
cara [p] = j + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
cara[o] = i;
cara [p] = j;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
cara [p] = j + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
cara[o] = i + 1;
cara [p] = j + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
}
}
}
}
}
}
}
}
return d_surface; return d_surface;
} }
static void __calculate_normal( 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)
{ {