diff --git a/src/main.c b/src/main.c index 772579c..567ac97 100644 --- a/src/main.c +++ b/src/main.c @@ -35,7 +35,7 @@ int main( void ) glewInit(); - points = generate_surface(256); + points = generate_surface(16); if( !( shader = create_shader() ) ) goto error_shader; diff --git a/src/surface.c b/src/surface.c index 8b44cb0..d10016c 100644 --- a/src/surface.c +++ b/src/surface.c @@ -21,18 +21,29 @@ void mobius(float *d_surface, int i, int j, int grid_size) void toro(float *d_surface, int i, int j, int grid_size) { - float u = (2.0*M_PI) * ((float)i/grid_size ); - float v = (2.0*M_PI) * ((float)j/grid_size ); + float u = (2*M_PI) * ((float)i/grid_size ); + float v = (2*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); } +void klein(float *d_surface, int i, int j, int grid_size) +{ + float u = (2*M_PI) * ((float)i/grid_size ); + float v = (2*M_PI) * ((float)j/grid_size ); + + d_surface[0] = (0.5*cos(v) + 0.5) * cos(u); + d_surface[1] = (0.5*cos(v) + 0.5) * sin(u); + d_surface[2] = sin(v) * cos(u/2); + //d_surface[2] = sin(v)*sin(u/2); +} + float * generate_surface(int grid_size) { long size = grid_size*grid_size*2*3*3; - function_t f = toro; + function_t f = klein; float * d_surface; int k=0;