From fd2111e33d291101df2b7b2ea52f78725b84ce1f Mon Sep 17 00:00:00 2001 From: PedroEdiaz Date: Fri, 24 Apr 2026 19:46:16 -0600 Subject: [PATCH] Add lightcone --- Makefile | 1 - example/light-cone.c | 51 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 example/light-cone.c diff --git a/Makefile b/Makefile index 7fe459a..7e9ca3b 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,6 @@ EXAMPLES = \ example/basic \ example/riemman \ example/n-cube \ - example/n-hilbert-cube \ example/light-cone \ example/lens diff --git a/example/light-cone.c b/example/light-cone.c new file mode 100644 index 0000000..0b1ecf1 --- /dev/null +++ b/example/light-cone.c @@ -0,0 +1,51 @@ +#include +#include + +#define KLEIN_IMPLEMENT +#include +#include +#include + +void lightcone(float *d_surface, int *coord, unsigned char * grid) +{ + + const int n = 3; + float norm = 0; + float sphere[4]; + + for (int i = 0; i < n; i++) + sphere[i] = ((float)coord[i] / grid[i]) - 0.5; + + for(int i = 0; i < n; i++) + norm += sphere[i] * sphere[i]; + + for (int i = 0; i < n; i++) + sphere[i] = sphere[i] / sqrt(norm); + + float d = ((float)coord[3]/grid[3]) ; + d_surface[0] = d* sphere[0]; + d_surface[1] = d* sphere[1]; + d_surface[2] = d* sphere[2]; + d_surface[3] = d; +} + +int main(void) +{ + char * file_name = "lightcone"; + struct klein klein; + struct parm parametrization = { + .grid = (unsigned char[]){8, 8,8,8}, + .m = 4, + .n = 4, + .f = lightcone, + }; + + + klein_parametrize(&klein, parametrization); + klein_normalize(&klein); + klein_export_file(klein, file_name); + + free(klein.vertex); + free(klein.normals); + return 0; +}