diff --git a/Makefile b/Makefile index f431d83..7fe459a 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ EXAMPLES = \ example/riemman \ example/n-cube \ example/n-hilbert-cube \ + example/light-cone \ example/lens CFLAGS = \ diff --git a/example/basic.c b/example/basic.c index 0488340..50fadd2 100644 --- a/example/basic.c +++ b/example/basic.c @@ -34,7 +34,7 @@ void mobius(float *d_surface, int *coord, unsigned char *grid) void torus(float *d_surface, int *coord, unsigned char *grid) { - float u = (2 * M_PI) * ((float)coord[0] / grid[0]); + float u = (M_PI) * ((float)coord[0] / grid[0]) + M_PI; float v = (2 * M_PI) * ((float)coord[1] / grid[1]); d_surface[0] = (1 + 0.5 * cos(v)) * cos(u); @@ -57,12 +57,14 @@ int main(void) { unsigned char i = 0; const char *file_name[] = {"mobius.klein", "torus.klein", "klein.klein"}; - struct parm parametrization[] = {{ - .grid = (unsigned char[]){16, 4}, - .m = 2, - .n = 3, - .f = mobius, - }, + struct parm parametrization[] = { + { + .grid = (unsigned char[]){16, 4}, + + .m = 2, + .n = 3, + .f = mobius, + }, { .grid = (unsigned char[]){16, 8}, .m = 2, @@ -74,9 +76,10 @@ int main(void) .m = 2, .n = 4, .f = klein, - }}; + }, + }; - for (i = 0; i < 3; ++i) + for (i = 0; i < 4; ++i) { struct klein klein; printf("writing %s\n", file_name[i]); diff --git a/src/input.c b/src/input.c index 9a4f60e..835d158 100644 --- a/src/input.c +++ b/src/input.c @@ -187,6 +187,28 @@ quat_t poll_input(window_t window) goto end; } + if (glfwGetKey((GLFWwindow *)window, GLFW_KEY_UP) == GLFW_PRESS) + { + glm_quatv(p, ANGLE, (vec3){1,0,0}); + goto end; + } + if (glfwGetKey((GLFWwindow *)window, GLFW_KEY_DOWN) == GLFW_PRESS) + { + glm_quatv(p, -ANGLE, (vec3){1,0,0}); + goto end; + } + if (glfwGetKey((GLFWwindow *)window, GLFW_KEY_RIGHT) == GLFW_PRESS) + { + glm_quatv(p, ANGLE, (vec3){0,1,0}); + goto end; + } + if (glfwGetKey((GLFWwindow *)window, GLFW_KEY_LEFT) == GLFW_PRESS) + { + + glm_quatv(p, -ANGLE, (vec3){0,1,0}); + goto end; + } + end: glm_quat_mul(p, q, q); glm_quat_rotatev(p, axis[0], axis[0]); diff --git a/src/klein.c b/src/klein.c index 7c01494..3a40edf 100644 --- a/src/klein.c +++ b/src/klein.c @@ -1,5 +1,6 @@ #include "main.h" +#include #include /* diff --git a/src/mesh.c b/src/mesh.c index 1ad14ad..f9a0e28 100644 --- a/src/mesh.c +++ b/src/mesh.c @@ -106,6 +106,7 @@ void draw_mesh_lines(id_t shader, mesh_t p) { struct obj *obj = p; + glLineWidth(4); glUseProgram(shader); glBindVertexArray(obj->vao); #ifndef EMSCRIPTEN