51 lines
878 B
C
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 = 10;
|
|
|
|
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;
|
|
}
|