funciones renombradas
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user