esfera y espacios lente agregados
This commit is contained in:
@@ -66,6 +66,41 @@ void cube(float *d_surface, int *coord, int grid)
|
|||||||
d_surface[i] = ((float)coord[i] / grid) - 0.5;
|
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)
|
void mobius(float *d_surface, int *coord, int grid)
|
||||||
{
|
{
|
||||||
const float width = 0.5;
|
const float width = 0.5;
|
||||||
@@ -106,10 +141,10 @@ float *generate_data_surface(unsigned char *s)
|
|||||||
|
|
||||||
int *cara;
|
int *cara;
|
||||||
|
|
||||||
parm.f = cube;
|
parm.f = lens;
|
||||||
parm.m = 6;
|
parm.m = 4;
|
||||||
parm.n = parm.m;
|
parm.n = 4;
|
||||||
parm.grid = 1;
|
parm.grid = 5;
|
||||||
|
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
assert(numero_caras(2) == 1);
|
assert(numero_caras(2) == 1);
|
||||||
@@ -118,7 +153,7 @@ float *generate_data_surface(unsigned char *s)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
cara = malloc(parm.m * sizeof(int));
|
cara = malloc(parm.m * sizeof(int));
|
||||||
*s = parm.m;
|
*s = parm.n;
|
||||||
|
|
||||||
size = parm.grid * parm.grid * 6 * (parm.n) * numero_caras(parm.m);
|
size = parm.grid * parm.grid * 6 * (parm.n) * numero_caras(parm.m);
|
||||||
d_surface = malloc((size + 1) * sizeof(float));
|
d_surface = malloc((size + 1) * sizeof(float));
|
||||||
@@ -149,11 +184,11 @@ float *generate_data_surface(unsigned char *s)
|
|||||||
q += parm.n;
|
q += parm.n;
|
||||||
|
|
||||||
cara[o] = i + 1;
|
cara[o] = i + 1;
|
||||||
// cara[p] = j;
|
cara[p] = j;
|
||||||
parm.f(&d_surface[q + 1], cara, parm.grid);
|
parm.f(&d_surface[q + 1], cara, parm.grid);
|
||||||
q += parm.n;
|
q += parm.n;
|
||||||
|
|
||||||
// cara[o] = i + 1;
|
cara[o] = i + 1;
|
||||||
cara[p] = j + 1;
|
cara[p] = j + 1;
|
||||||
parm.f(&d_surface[q + 1], cara, parm.grid);
|
parm.f(&d_surface[q + 1], cara, parm.grid);
|
||||||
q += parm.n;
|
q += parm.n;
|
||||||
@@ -163,13 +198,13 @@ float *generate_data_surface(unsigned char *s)
|
|||||||
parm.f(&d_surface[q + 1], cara, parm.grid);
|
parm.f(&d_surface[q + 1], cara, parm.grid);
|
||||||
q += parm.n;
|
q += parm.n;
|
||||||
|
|
||||||
// cara[o] = i;
|
cara[o] = i;
|
||||||
cara[p] = j + 1;
|
cara[p] = j + 1;
|
||||||
parm.f(&d_surface[q + 1], cara, parm.grid);
|
parm.f(&d_surface[q + 1], cara, parm.grid);
|
||||||
q += parm.n;
|
q += parm.n;
|
||||||
|
|
||||||
cara[o] = i + 1;
|
cara[o] = i + 1;
|
||||||
// cara [p] = j + 1;
|
cara [p] = j + 1;
|
||||||
parm.f(&d_surface[q + 1], cara, parm.grid);
|
parm.f(&d_surface[q + 1], cara, parm.grid);
|
||||||
q += parm.n;
|
q += parm.n;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user