Files
manigraph/example/n-cube.c
2025-05-11 17:28:30 -06:00

51 lines
878 B
C

#include <math.h>
#include <stdio.h>
#define KLEIN_IMPLEMENT
#include <klein/klein.h>
#include <klein/norm.h>
#include <klein/parm.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
unsigned char dim = 17;
void cube(float *d_surface, int *coord, unsigned char *grid)
{
int i;
for (i = 0; i < dim; i++)
d_surface[i] = (2 * (float)coord[i] / grid[i]) - 1;
if (dim == 2)
d_surface[2] = 0;
}
int main(void)
{
unsigned char i;
char file_name[0xff];
struct klein klein;
struct parm parametrization = {
.m = dim,
.n = dim,
.f = cube,
};
parametrization.grid = malloc(dim);
for (i = 0; i < dim; ++i)
parametrization.grid[i] = 1 + i;
snprintf(file_name, 0xff, "cube-%03d.klein", dim);
printf("writing %s\n", file_name);
klein_parametrize(&klein, parametrization);
klein_normalize(&klein);
klein_export_file(klein, file_name);
return 0;
}