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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user