Fix: trous, the good one
This commit is contained in:
@@ -6,61 +6,60 @@
|
||||
#define M_PI 3.14159265358979323846
|
||||
#endif
|
||||
|
||||
#define WIDTH 0.5
|
||||
|
||||
typedef void(*function_t)(float*,int, int, int);
|
||||
|
||||
void mobius(float *d_surface, int i, int j, int grid_size)
|
||||
{
|
||||
float u = (2*M_PI) * ((float)i/(grid_size) );
|
||||
float v = (2*WIDTH) * ((float)j/(grid_size) ) - WIDTH;
|
||||
const float width = 0.5;
|
||||
float u = (2*M_PI) * ((float)i/grid_size );
|
||||
float v = (2*width) * ((float)j/grid_size ) - width;
|
||||
|
||||
d_surface[0] = cos(u) + v * cos(u / 2) * cos(u);
|
||||
d_surface[1] = sin(u) + v * cos(u / 2) * sin(u);
|
||||
d_surface[2] = v * sin(u / 2);
|
||||
d_surface[0] = cos(u) + v * cos(u / 2) * cos(u);
|
||||
d_surface[1] = sin(u) + v * cos(u / 2) * sin(u);
|
||||
d_surface[2] = v * sin(u / 2);
|
||||
}
|
||||
|
||||
void toro(float *d_surface, int i, int j, int grid_size)
|
||||
{
|
||||
float u = (2*M_PI) * ((float)i/(grid_size) );
|
||||
float v = (1*WIDTH) * ((float)j );
|
||||
float u = (2.0*M_PI) * ((float)i/grid_size );
|
||||
float v = (2.0*M_PI) * ((float)j/grid_size );
|
||||
|
||||
d_surface[0] = (1 + 0.5*cos(v))*cos(u);
|
||||
d_surface[1] = (1 + 0.5*cos(v)) * sin(u);
|
||||
d_surface[2] = 0.5*sin(v);
|
||||
d_surface[0] = (1 + 0.5*cos(v))*cos(u);
|
||||
d_surface[1] = (1 + 0.5*cos(v))*sin(u);
|
||||
d_surface[2] = 0.5*sin(v);
|
||||
}
|
||||
|
||||
float * generate_surface(int grid_size)
|
||||
{
|
||||
long size = grid_size*grid_size*2*3*3;
|
||||
function_t f = toro;
|
||||
float * d_surface;
|
||||
int k=0;
|
||||
long size = grid_size*grid_size*2*3*3;
|
||||
function_t f = toro;
|
||||
float * d_surface;
|
||||
int k=0;
|
||||
|
||||
d_surface = malloc((size+1)*sizeof(float));
|
||||
d_surface[0] = size;
|
||||
d_surface = malloc((size+1)*sizeof(float));
|
||||
d_surface[0] = size;
|
||||
|
||||
for (int i = 0; i < grid_size; i++)
|
||||
{
|
||||
for (int j = 0; j < grid_size; j++)
|
||||
{
|
||||
// Triángulo 1
|
||||
f(&d_surface[k + 1], i, j, grid_size);
|
||||
k+=3;
|
||||
f(&d_surface[k + 1], i + 1, j, grid_size);
|
||||
k+=3;
|
||||
f(&d_surface[k + 1], i + 1, j + 1, grid_size);
|
||||
k+=3;
|
||||
for (int i = 0; i < grid_size; i++)
|
||||
{
|
||||
for (int j = 0; j < grid_size; j++)
|
||||
{
|
||||
// Triángulo 1
|
||||
f(&d_surface[k + 1], i, j, grid_size);
|
||||
k+=3;
|
||||
f(&d_surface[k + 1], i + 1, j, grid_size);
|
||||
k+=3;
|
||||
f(&d_surface[k + 1], i + 1, j + 1, grid_size);
|
||||
k+=3;
|
||||
|
||||
// Triángulo 2
|
||||
f(&d_surface[k + 1], i, j, grid_size);
|
||||
k+=3;
|
||||
f(&d_surface[k + 1], i, j + 1, grid_size);
|
||||
k+=3;
|
||||
f(&d_surface[k + 1], i + 1, j + 1, grid_size);
|
||||
k+=3;
|
||||
}
|
||||
}
|
||||
// Triángulo 2
|
||||
f(&d_surface[k + 1], i, j, grid_size);
|
||||
k+=3;
|
||||
f(&d_surface[k + 1], i, j + 1, grid_size);
|
||||
k+=3;
|
||||
f(&d_surface[k + 1], i + 1, j + 1, grid_size);
|
||||
k+=3;
|
||||
}
|
||||
}
|
||||
|
||||
return d_surface;
|
||||
return d_surface;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user