esfera y espacios lente agregados

This commit is contained in:
alan
2024-12-01 14:49:02 -06:00
parent 8be2052c45
commit f33b8f67b5

View File

@@ -66,6 +66,41 @@ void cube(float *d_surface, int *coord, int grid)
d_surface[i] = ((float)coord[i] / grid) - 0.5;
}
void sphere(float *d_surface, int *coord, int grid)
{
for (int i = 0; i < parm.m; i++)
d_surface[i] = ((float)coord[i] / grid) - 0.5;
float norm = 0;
for(int i = 0; i < parm.m; i++)
norm += d_surface[i] * d_surface[i];
for (int i = 0; i < parm.m; i++)
d_surface[i] = d_surface[i] / sqrt(norm);
}
void lens(float *d_surface, int *coord, int grid)
{
int p = 7;
int q = 1;
float sphere[4];
for (int i = 0; i < 4; i++)
sphere[i] = ((float)coord[i] / grid) - 0.5;
float norm = 0;
for(int i = 0; i < 4; i++)
norm += sphere[i] * sphere[i];
for (int i = 0; i < 4; i++)
sphere[i] = sphere[i] / sqrt(norm);
d_surface[0] = (sphere[0] * cos(2 * M_PI / p)) - (sphere[1] * sin(2 * M_PI / p));
d_surface[1] = (sphere[0] * sin(2 * M_PI / p)) + (sphere[1] * cos(2 * M_PI / p));
d_surface[2] = (sphere[2] * cos(2 * M_PI * q / p)) - (sphere[3] * sin(2 * M_PI * q / p));
d_surface[3] = (sphere[2] * sin(2 * M_PI * q / p)) + (sphere[3] * cos(2 * M_PI * q / p));
}
void mobius(float *d_surface, int *coord, int grid)
{
const float width = 0.5;
@@ -106,10 +141,10 @@ float *generate_data_surface(unsigned char *s)
int *cara;
parm.f = cube;
parm.m = 6;
parm.n = parm.m;
parm.grid = 1;
parm.f = lens;
parm.m = 4;
parm.n = 4;
parm.grid = 5;
#ifdef TEST
assert(numero_caras(2) == 1);
@@ -118,7 +153,7 @@ float *generate_data_surface(unsigned char *s)
#endif
cara = malloc(parm.m * sizeof(int));
*s = parm.m;
*s = parm.n;
size = parm.grid * parm.grid * 6 * (parm.n) * numero_caras(parm.m);
d_surface = malloc((size + 1) * sizeof(float));
@@ -149,11 +184,11 @@ float *generate_data_surface(unsigned char *s)
q += parm.n;
cara[o] = i + 1;
// cara[p] = j;
cara[p] = j;
parm.f(&d_surface[q + 1], cara, parm.grid);
q += parm.n;
// cara[o] = i + 1;
cara[o] = i + 1;
cara[p] = j + 1;
parm.f(&d_surface[q + 1], cara, parm.grid);
q += parm.n;
@@ -163,13 +198,13 @@ float *generate_data_surface(unsigned char *s)
parm.f(&d_surface[q + 1], cara, parm.grid);
q += parm.n;
// cara[o] = i;
cara[o] = i;
cara[p] = j + 1;
parm.f(&d_surface[q + 1], cara, parm.grid);
q += parm.n;
cara[o] = i + 1;
// cara [p] = j + 1;
cara [p] = j + 1;
parm.f(&d_surface[q + 1], cara, parm.grid);
q += parm.n;
}