diff --git a/src/surface.c b/src/surface.c index bc14bc7..79f75af 100644 --- a/src/surface.c +++ b/src/surface.c @@ -29,6 +29,14 @@ void riemman(float *d_surface, int * coords, int grid_size) } +void cube( float *d_surface, int * coord, int grid_size ) +{ + unsigned char i; + + for(int i=0; i<4; i++ ) + d_surface[i]=(float)coord[i]/grid_size; +} + void mobius(float *d_surface, int * coord, int grid_size) { const float width = 0.5; @@ -50,20 +58,6 @@ void torus(float *d_surface, int * coord, int grid_size) d_surface[2] = 0.5 * sin(v); } -void torus_5d(float *d_surface, int * coord, int grid_size) -{ - float u = (2 * M_PI) * ((float)coord[0] / grid_size); - float v = (2 * M_PI) * ((float)coord[1] / grid_size); - float r1 = (float)coord[2] / grid_size; - float r2 = (float)coord[3] / grid_size; - - d_surface[0] = (r1 + r2 * cos(v)) * cos(u); - d_surface[1] = (r1 + r2 * cos(v)) * sin(u); - d_surface[2] = r2 * sin(v); - d_surface[3] = r1; - d_surface[4] = r2; -} - void klein(float *d_surface, int * coord, int grid_size) { float u = (2 * M_PI) * ((float)coord[0] / grid_size); @@ -77,59 +71,22 @@ 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) -{ - unsigned int i, j, k = 0; - long size; - function_t f; - float *d_surface; - - f = klein; - *m = 4; - - size = grid_size * grid_size * 6 * (*m); - d_surface = malloc((size + 1) * sizeof(float)); - d_surface[0] = size; - ++d_surface; - - for (i = 0; i < grid_size; i++) - { - for (j = 0; j < grid_size; j++) - { - // triangle 1, Front - f(&d_surface[k + 1], &cara, grid_size); - k += *m; - f(&d_surface[k + 1], &cara, j}, grid_size); - k += *m; - f(&d_surface[k + 1], &cara, j + 1}, grid_size); - k += *m; - - // triangle 2, Back - f(&d_surface[k + 1], &cara, grid_size); - k += *m; - f(&d_surface[k + 1], &cara+ 1}, grid_size); - k += *m; - 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; + unsigned int i, j, k, o, p, l, n, m; + long size, q=0; function_t f; float *d_surface; const int dim =2; int cara[dim]; - f = klein; + char bits[dim+1]; + bits[dim]=0; + + f =klein ; *s = 4; - size = grid_size * grid_size * 6 * (*s); + size = grid_size * grid_size * 6 * (*s) * 24; d_surface = malloc((size + 1) * sizeof(float)); d_surface[0] = size; @@ -139,12 +96,13 @@ float *generate_data_surface(int grid_size, unsigned char *s) { for (k = 0; k < (1 << (dim-2)); k++) { - for(n = 0; n < dim; n ++) + unsigned char skip=0; + for(n = 0; n < dim-2; n++) { - if( n==o || n== p ) - continue; + if( n==(o-1) || n==p ) + skip++; - cara[n] = (k & (1<