funciones renombradas

This commit is contained in:
alan
2024-10-18 09:44:38 -06:00
parent 994bd3987c
commit 27d43e6bca
2 changed files with 28 additions and 28 deletions

View File

@@ -18,7 +18,7 @@ unsigned char palette[] =
}; };
const char * wname = "manigraph: manifold grapher"; const char * wname = "manigraph: manifold grapher";
float * gen_surface(); float * generate_surface();
int main( void ) int main( void )
{ {
@@ -35,7 +35,7 @@ int main( void )
glewInit(); glewInit();
points = gen_surface(256); points = generate_surface(256);
if( !( shader = create_shader() ) ) if( !( shader = create_shader() ) )
goto error_shader; goto error_shader;

View File

@@ -10,57 +10,57 @@
typedef void(*function_t)(float*,int, int, int); typedef void(*function_t)(float*,int, int, int);
void mobius(float *p, int i, int j, int GRID_SIZE) void mobius(float *d_surface, int i, int j, int grid_size)
{ {
float u = (2*M_PI) * ((float)i/(GRID_SIZE) ); float u = (2*M_PI) * ((float)i/(grid_size) );
float v = (2*WIDTH) * ((float)j/(GRID_SIZE) ) - WIDTH; float v = (2*WIDTH) * ((float)j/(grid_size) ) - WIDTH;
p[0] = cos(u) + v * cos(u / 2) * cos(u); d_surface[0] = cos(u) + v * cos(u / 2) * cos(u);
p[1] = sin(u) + v * cos(u / 2) * sin(u); d_surface[1] = sin(u) + v * cos(u / 2) * sin(u);
p[2] = v * sin(u / 2); d_surface[2] = v * sin(u / 2);
} }
void toro(float *p, int i, int j, int GRID_SIZE) void toro(float *d_surface, int i, int j, int grid_size)
{ {
float u = (2*M_PI) * ((float)i/(GRID_SIZE) ); float u = (2*M_PI) * ((float)i/(grid_size) );
float v = (2*WIDTH) * ((float)j ); float v = (2*WIDTH) * ((float)j );
p[0] = (1 + 0.5*cos(v))*cos(u); d_surface[0] = (1 + 0.5*cos(v))*cos(u);
p[1] = (1 + 0.5*cos(v)) * sin(u); d_surface[1] = (1 + 0.5*cos(v)) * sin(u);
p[2] = 0.5*sin(v); d_surface[2] = 0.5*sin(v);
} }
float * gen_surface(int GRID_SIZE) float * generate_surface(int grid_size)
{ {
long size = GRID_SIZE*GRID_SIZE*2*3*3; long size = grid_size*grid_size*2*3*3;
function_t f = mobius; function_t f = toro;
float * points; float * d_surface;
int k=0; int k=0;
points = malloc((size+1)*sizeof(float)); d_surface = malloc((size+1)*sizeof(float));
points[0] = size; d_surface[0] = size;
for (int i = 0; i < GRID_SIZE; i++) for (int i = 0; i < grid_size; i++)
{ {
for (int j = 0; j < GRID_SIZE; j++) for (int j = 0; j < grid_size; j++)
{ {
// Triángulo 1 // Triángulo 1
f(&points[k + 1], i, j, GRID_SIZE); f(&d_surface[k + 1], i, j, grid_size);
k+=3; k+=3;
f(&points[k + 1], i + 1, j, GRID_SIZE); f(&d_surface[k + 1], i + 1, j, grid_size);
k+=3; k+=3;
f(&points[k + 1], i + 1, j + 1, GRID_SIZE); f(&d_surface[k + 1], i + 1, j + 1, grid_size);
k+=3; k+=3;
// Triángulo 2 // Triángulo 2
f(&points[k + 1], i, j, GRID_SIZE); f(&d_surface[k + 1], i, j, grid_size);
k+=3; k+=3;
f(&points[k + 1], i, j + 1, GRID_SIZE); f(&d_surface[k + 1], i, j + 1, grid_size);
k+=3; k+=3;
f(&points[k + 1], i + 1, j + 1, GRID_SIZE); f(&d_surface[k + 1], i + 1, j + 1, grid_size);
k+=3; k+=3;
} }
} }
return points; return d_surface;
} }