From 805ff18e21c787bbcd176031ce64f98bd95957bc Mon Sep 17 00:00:00 2001 From: alan Date: Tue, 26 Nov 2024 22:21:56 -0600 Subject: [PATCH] expandiendo a Rn avance --- src/surface.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 91 insertions(+), 7 deletions(-) diff --git a/src/surface.c b/src/surface.c index 2acc0e8..b568302 100644 --- a/src/surface.c +++ b/src/surface.c @@ -77,7 +77,7 @@ void klein(float *d_surface, int * coord, int grid_size) 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; long size; @@ -96,26 +96,110 @@ float *generate_data_surface(int grid_size, unsigned char *m) for (j = 0; j < grid_size; j++) { // triangle 1, Front - f(&d_surface[k + 1], (int[2]){i, j}, grid_size); + f(&d_surface[k + 1], &cara, grid_size); 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; - 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; // triangle 2, Back - f(&d_surface[k + 1], (int[2]){i, j}, grid_size); + f(&d_surface[k + 1], &cara, grid_size); 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; - 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; } } + 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; } + + static void __calculate_normal( float *p1, float *p2, float *p3, float *normal, unsigned char n) {