Add files via upload
This commit is contained in:
committed by
GitHub
parent
7c444b3a0b
commit
1f962fc7c8
@@ -1,12 +1,14 @@
|
||||
/* global variables needed for circle configuration with periodic boundary conditions */
|
||||
|
||||
short int double_circle[NMAXCIRCLES]; /* set to 1 if a circle is a translate of another one on the boundary */
|
||||
int partner_circle[NMAXCIRCLES]; /* number of circle of which current circle is a copy */
|
||||
// short int double_circle[NMAXCIRCLES]; /* set to 1 if a circle is a translate of another one on the boundary */
|
||||
// int partner_circle[NMAXCIRCLES]; /* number of circle of which current circle is a copy */
|
||||
|
||||
void init_circle_config_pinball(int circle_pattern)
|
||||
|
||||
|
||||
void init_circles_pinball(int circle_pattern, t_circle circles[NMAXCIRCLES])
|
||||
{
|
||||
int i, j, k, n, ncirc0, n_p_active, ncandidates=5000, naccepted;
|
||||
double dx, dy, xx[4], yy[4], x, y, gamma, height, phi, r0, r, dpoisson = 3.25*MU;
|
||||
double dx, dy, xx[4], yy[4], x, y, xk, yk, hy, gamma, height, phi, r0, r, dpoisson = 3.25*MU;
|
||||
short int active_poisson[NMAXCIRCLES], far;
|
||||
|
||||
switch (circle_pattern) {
|
||||
@@ -14,27 +16,27 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
{
|
||||
ncircles = 4;
|
||||
|
||||
circlex[0] = 1.0;
|
||||
circley[0] = 0.0;
|
||||
circlerad[0] = 0.8;
|
||||
circles[0].xc = 1.0;
|
||||
circles[0].yc = 0.0;
|
||||
circles[0].radius = 0.8;
|
||||
|
||||
circles[1].xc = -1.0;
|
||||
circles[1].yc = 0.0;
|
||||
circles[1].radius = 0.8;
|
||||
|
||||
circlex[1] = -1.0;
|
||||
circley[1] = 0.0;
|
||||
circlerad[1] = 0.8;
|
||||
|
||||
circlex[2] = 0.0;
|
||||
circley[2] = 0.8;
|
||||
circlerad[2] = 0.4;
|
||||
|
||||
circlex[3] = 0.0;
|
||||
circley[3] = -0.8;
|
||||
circlerad[3] = 0.4;
|
||||
circles[2].xc = 0.0;
|
||||
circles[2].yc = 0.8;
|
||||
circles[2].radius = 0.4;
|
||||
|
||||
circles[3].xc = 0.0;
|
||||
circles[3].yc = -0.8;
|
||||
circles[3].radius = 0.4;
|
||||
|
||||
for (i=0; i<4; i++)
|
||||
{
|
||||
circleactive[i] = 1;
|
||||
circlecolor[i] = 0;
|
||||
newcircle[i] = 0;
|
||||
circles[i].active = 1;
|
||||
circles[i].color = 0;
|
||||
circles[i].new = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -48,12 +50,12 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
for (j = 0; j < NCY; j++)
|
||||
{
|
||||
n = NCY*i + j;
|
||||
circlex[n] = ((double)(i-NCX/2) + 0.5)*dy;
|
||||
circley[n] = BOXYMIN + ((double)j + 0.5)*dy;
|
||||
circlerad[n] = MU;
|
||||
circleactive[n] = 1;
|
||||
circlecolor[n] = 0;
|
||||
newcircle[n] = 0;
|
||||
circles[n].xc = ((double)(i-NCX/2) + 0.5)*dy;
|
||||
circles[n].yc = BOXYMIN + ((double)j + 0.5)*dy;
|
||||
circles[n].radius = MU;
|
||||
circles[n].active = 1;
|
||||
circles[n].color = 0;
|
||||
circles[n].new = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -66,15 +68,15 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
for (j = 0; j < NCY+1; j++)
|
||||
{
|
||||
n = (NCY+1)*i + j;
|
||||
// circlex[n] = ((double)(i-NCX/2) + 0.5)*dy;
|
||||
circlex[n] = ((double)(i-NCX/2))*dy;
|
||||
if (NCX % 2 == 0) circlex[n] += 0.5*dy;
|
||||
circley[n] = YMIN + ((double)j - 0.5)*dy;
|
||||
if ((i+NCX)%2 == 1) circley[n] += 0.5*dy;
|
||||
circlerad[n] = MU;
|
||||
circleactive[n] = 1;
|
||||
circlecolor[n] = 0;
|
||||
newcircle[n] = 0;
|
||||
// circles[n].xc = ((double)(i-NCX/2) + 0.5)*dy;
|
||||
circles[n].xc = ((double)(i-NCX/2))*dy;
|
||||
if (NCX % 2 == 0) circles[n].xc += 0.5*dy;
|
||||
circles[n].yc = YMIN + ((double)j - 0.5)*dy;
|
||||
if ((i+NCX)%2 == 1) circles[n].yc += 0.5*dy;
|
||||
circles[n].radius = MU;
|
||||
circles[n].active = 1;
|
||||
circles[n].color = 0;
|
||||
circles[n].new = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -87,30 +89,30 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
for (j = 0; j < NCY+1; j++)
|
||||
{
|
||||
n = (NCY+1)*i + j;
|
||||
circlex[n] = ((double)(i-NCX/2) + 0.5)*dx;
|
||||
circley[n] = BOXYMIN + ((double)j)*dy;
|
||||
if ((i+NCX)%2 == 1) circley[n] += 0.5*dy;
|
||||
circlerad[n] = MU;
|
||||
circleactive[n] = 1;
|
||||
circlecolor[n] = 0;
|
||||
newcircle[n] = 0;
|
||||
circles[n].xc = ((double)(i-NCX/2) + 0.5)*dx;
|
||||
circles[n].yc = BOXYMIN + ((double)j)*dy;
|
||||
if ((i+NCX)%2 == 1) circles[n].yc += 0.5*dy;
|
||||
circles[n].radius = MU;
|
||||
circles[n].active = 1;
|
||||
circles[n].color = 0;
|
||||
circles[n].new = 0;
|
||||
|
||||
/* take care of periodic boundary conditions */
|
||||
if (B_DOMAIN == D_CIRCLES_IN_TORUS)
|
||||
{
|
||||
if ((j == NCY)&&((i+NCX)%2 == 0))
|
||||
{
|
||||
double_circle[n] = 1;
|
||||
partner_circle[n] = (NCY+1)*i;
|
||||
circles[n].double_circle = 1;
|
||||
circles[n].partner = (NCY+1)*i;
|
||||
}
|
||||
else
|
||||
{
|
||||
double_circle[n] = 0;
|
||||
if ((j == 0)&&((i+NCX)%2 == 0)) partner_circle[n] = (NCY+1)*i + NCY;
|
||||
else partner_circle[n] = n;
|
||||
circles[n].double_circle = 0;
|
||||
if ((j == 0)&&((i+NCX)%2 == 0)) circles[n].partner = (NCY+1)*i + NCY;
|
||||
else circles[n].partner = n;
|
||||
}
|
||||
}
|
||||
else double_circle[n] = 0;
|
||||
else circles[n].double_circle = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -122,22 +124,22 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
dx = 2.0*LAMBDA/((double)ncircles);
|
||||
for (n = 0; n < ncircles; n++)
|
||||
{
|
||||
circlex[n] = -LAMBDA + n*dx;
|
||||
circley[n] = y;
|
||||
circles[n].xc = -LAMBDA + n*dx;
|
||||
circles[n].yc = y;
|
||||
y += height*gamma;
|
||||
if (y > YMAX) y -= height;
|
||||
circlerad[n] = MU;
|
||||
circleactive[n] = 1;
|
||||
circlecolor[n] = 0;
|
||||
newcircle[n] = 0;
|
||||
circles[n].radius = MU;
|
||||
circles[n].active = 1;
|
||||
circles[n].color = 0;
|
||||
circles[n].new = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case (C_GOLDEN_SPIRAL):
|
||||
{
|
||||
ncircles = 1;
|
||||
circlex[0] = 0.0;
|
||||
circley[0] = 0.0;
|
||||
circles[0].xc = 0.0;
|
||||
circles[0].yc = 0.0;
|
||||
|
||||
gamma = (sqrt(5.0) - 1.0)*PI; /* golden mean times 2Pi */
|
||||
phi = 0.0;
|
||||
@@ -154,19 +156,19 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
|
||||
if ((vabs(x) < LAMBDA)&&(vabs(y) < YMAX + MU))
|
||||
{
|
||||
circlex[ncircles] = x;
|
||||
circley[ncircles] = y;
|
||||
circles[ncircles].xc = x;
|
||||
circles[ncircles].yc = y;
|
||||
ncircles++;
|
||||
}
|
||||
}
|
||||
|
||||
for (i=0; i<ncircles; i++)
|
||||
{
|
||||
circlerad[i] = MU;
|
||||
circlecolor[i] = 0;
|
||||
newcircle[i] = 0;
|
||||
circles[i].radius = MU;
|
||||
circles[i].color = 0;
|
||||
circles[i].new = 0;
|
||||
/* inactivate circles outside the domain */
|
||||
if ((circley[i] < YMAX + MU)&&(circley[i] > YMIN - MU)) circleactive[i] = 1;
|
||||
if ((circles[i].yc < YMAX + MU)&&(circles[i].yc > YMIN - MU)) circles[i].active = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -178,12 +180,12 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
for (j = 0; j < NCY; j++)
|
||||
{
|
||||
n = NCY*i + j;
|
||||
circlex[n] = ((double)(i-NCX/2) + 0.5*((double)rand()/RAND_MAX - 0.5))*dy;
|
||||
circley[n] = YMIN + ((double)j + 0.5 + 0.5*((double)rand()/RAND_MAX - 0.5))*dy;
|
||||
circlerad[n] = MU*sqrt(1.0 + 0.8*((double)rand()/RAND_MAX - 0.5));
|
||||
circleactive[n] = 1;
|
||||
circlecolor[n] = 0;
|
||||
newcircle[n] = 0;
|
||||
circles[n].xc = ((double)(i-NCX/2) + 0.5*((double)rand()/RAND_MAX - 0.5))*dy;
|
||||
circles[n].yc = YMIN + ((double)j + 0.5 + 0.5*((double)rand()/RAND_MAX - 0.5))*dy;
|
||||
circles[n].radius = MU*sqrt(1.0 + 0.8*((double)rand()/RAND_MAX - 0.5));
|
||||
circles[n].active = 1;
|
||||
circles[n].color = 0;
|
||||
circles[n].new = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -192,52 +194,52 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
ncircles = NPOISSON;
|
||||
for (n = 0; n < NPOISSON; n++)
|
||||
{
|
||||
circlex[n] = LAMBDA*(2.0*(double)rand()/RAND_MAX - 1.0);
|
||||
circley[n] = (BOXYMAX - BOXYMIN)*(double)rand()/RAND_MAX + BOXYMIN;
|
||||
circlerad[n] = MU;
|
||||
circleactive[n] = 1;
|
||||
circlecolor[n] = 0;
|
||||
newcircle[n] = 0;
|
||||
double_circle[n] = 0;
|
||||
partner_circle[n] = n;
|
||||
circles[n].xc = LAMBDA*(2.0*(double)rand()/RAND_MAX - 1.0);
|
||||
circles[n].yc = (BOXYMAX - BOXYMIN)*(double)rand()/RAND_MAX + BOXYMIN;
|
||||
circles[n].radius = MU;
|
||||
circles[n].active = 1;
|
||||
circles[n].color = 0;
|
||||
circles[n].new = 0;
|
||||
circles[n].double_circle = 0;
|
||||
circles[n].partner = n;
|
||||
|
||||
/* take care of periodic boundary conditions */
|
||||
if (B_DOMAIN == D_CIRCLES_IN_TORUS)
|
||||
{
|
||||
/* inactivate circles in corners */
|
||||
if ((vabs(circlex[n]) > LAMBDA - MU)&&((circley[n] < BOXYMIN + MU)||(circley[n] > BOXYMAX - MU)))
|
||||
circleactive[n] = 0;
|
||||
if ((vabs(circles[n].xc) > LAMBDA - MU)&&((circles[n].yc < BOXYMIN + MU)||(circles[n].yc > BOXYMAX - MU)))
|
||||
circles[n].active = 0;
|
||||
|
||||
if (circlex[n] < - LAMBDA + MU)
|
||||
if (circles[n].xc < - LAMBDA + MU)
|
||||
{
|
||||
circlex[ncircles] = circlex[n] + 2.0*LAMBDA;
|
||||
circley[ncircles] = circley[n];
|
||||
partner_circle[ncircles] = n;
|
||||
partner_circle[n] = ncircles;
|
||||
circles[ncircles].xc = circles[n].xc + 2.0*LAMBDA;
|
||||
circles[ncircles].yc = circles[n].yc;
|
||||
circles[ncircles].partner = n;
|
||||
circles[n].partner = ncircles;
|
||||
ncircles++;
|
||||
}
|
||||
else if (circlex[n] > LAMBDA - MU)
|
||||
else if (circles[n].xc > LAMBDA - MU)
|
||||
{
|
||||
circlex[ncircles] = circlex[n] - 2.0*LAMBDA;
|
||||
circley[ncircles] = circley[n];
|
||||
partner_circle[ncircles] = n;
|
||||
partner_circle[n] = ncircles;
|
||||
circles[ncircles].xc = circles[n].xc - 2.0*LAMBDA;
|
||||
circles[ncircles].yc = circles[n].yc;
|
||||
circles[ncircles].partner = n;
|
||||
circles[n].partner = ncircles;
|
||||
ncircles++;
|
||||
}
|
||||
if (circley[n] < BOXYMIN + MU)
|
||||
if (circles[n].yc < BOXYMIN + MU)
|
||||
{
|
||||
circlex[ncircles] = circlex[n];
|
||||
circley[ncircles] = circley[n] + BOXYMAX - BOXYMIN;
|
||||
partner_circle[ncircles] = n;
|
||||
partner_circle[n] = ncircles;
|
||||
circles[ncircles].xc = circles[n].xc;
|
||||
circles[ncircles].yc = circles[n].yc + BOXYMAX - BOXYMIN;
|
||||
circles[ncircles].partner = n;
|
||||
circles[n].partner = ncircles;
|
||||
ncircles++;
|
||||
}
|
||||
else if (circley[n] > BOXYMAX - MU)
|
||||
else if (circles[n].yc > BOXYMAX - MU)
|
||||
{
|
||||
circlex[ncircles] = circlex[n];
|
||||
circley[ncircles] = circley[n] - BOXYMAX + BOXYMIN;
|
||||
partner_circle[ncircles] = n;
|
||||
partner_circle[n] = ncircles;
|
||||
circles[ncircles].xc = circles[n].xc;
|
||||
circles[ncircles].yc = circles[n].yc - BOXYMAX + BOXYMIN;
|
||||
circles[ncircles].partner = n;
|
||||
circles[n].partner = ncircles;
|
||||
ncircles++;
|
||||
}
|
||||
}
|
||||
@@ -245,12 +247,12 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
printf("%i circles\n", ncircles);
|
||||
if (B_DOMAIN == D_CIRCLES_IN_TORUS) for (n = NPOISSON; n < ncircles; n++)
|
||||
{
|
||||
// printf("circle %i at (%.3f, %.3f)\n", n, circlex[n], circley[n]);
|
||||
circlerad[n] = MU;
|
||||
if (circleactive[partner_circle[n]]) circleactive[n] = 1;
|
||||
circlecolor[n] = 0;
|
||||
newcircle[n] = 0;
|
||||
double_circle[n] = 1;
|
||||
// printf("circle %i at (%.3f, %.3f)\n", n, circles[n].xc, circles[n].yc);
|
||||
circles[n].radius = MU;
|
||||
if (circles[circles[n].partner].active) circles[n].active = 1;
|
||||
circles[n].color = 0;
|
||||
circles[n].new = 0;
|
||||
circles[n].double_circle = 1;
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -259,9 +261,11 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
{
|
||||
printf("Generating Poisson disc sample\n");
|
||||
/* generate first circle */
|
||||
circlex[0] = LAMBDA*(2.0*(double)rand()/RAND_MAX - 1.0);
|
||||
circley[0] = (YMAX - YMIN)*(double)rand()/RAND_MAX + YMIN;
|
||||
circles[0].xc = LAMBDA*(2.0*(double)rand()/RAND_MAX - 1.0);
|
||||
circles[0].yc = (BOXYMAX - BOXYMIN)*(double)rand()/RAND_MAX + BOXYMIN;
|
||||
active_poisson[0] = 1;
|
||||
circles[0].double_circle = 0;
|
||||
circles[0].partner = 0;
|
||||
n_p_active = 1;
|
||||
ncircles = 1;
|
||||
|
||||
@@ -277,30 +281,119 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
{
|
||||
r = dpoisson*(2.0*(double)rand()/RAND_MAX + 1.0);
|
||||
phi = DPI*(double)rand()/RAND_MAX;
|
||||
x = circlex[i] + r*cos(phi);
|
||||
y = circley[i] + r*sin(phi);
|
||||
x = circles[i].xc + r*cos(phi);
|
||||
y = circles[i].yc + r*sin(phi);
|
||||
// printf("Testing new circle at (%.3f,%.3f)\t", x, y);
|
||||
far = 1;
|
||||
for (k=0; k<ncircles; k++) if ((k!=i))
|
||||
{
|
||||
xk = circles[k].xc;
|
||||
yk = circles[k].yc;
|
||||
hy = BOXYMAX - BOXYMIN;
|
||||
|
||||
/* new circle is far away from circle k */
|
||||
far = far*((x - circlex[k])*(x - circlex[k]) + (y - circley[k])*(y - circley[k]) >= dpoisson*dpoisson);
|
||||
/* new circle is in domain */
|
||||
far = far*(vabs(x) < LAMBDA)*(y < YMAX)*(y > YMIN);
|
||||
}
|
||||
far = far*((x - xk)*(x - xk) + (y - yk)*(y - yk) >= dpoisson*dpoisson);
|
||||
far = far*((x - xk)*(x - xk) + (y - yk + hy)*(y - yk + hy) >= dpoisson*dpoisson);
|
||||
far = far*((x - xk)*(x - xk) + (y - yk - hy)*(y - yk - hy) >= dpoisson*dpoisson);
|
||||
far = far*((x - xk + 2.0*LAMBDA)*(x - xk + 2.0*LAMBDA) + (y - yk)*(y - yk) >= dpoisson*dpoisson);
|
||||
far = far*((x - xk - 2.0*LAMBDA)*(x - xk - 2.0*LAMBDA) + (y - yk)*(y - yk) >= dpoisson*dpoisson);
|
||||
}
|
||||
/* new circle is in domain */
|
||||
far = far*(vabs(x) < LAMBDA + 0.0)*(y < BOXYMAX + 0.0)*(y > BOXYMIN - 0.0);
|
||||
|
||||
/* exclude circles in corners */
|
||||
if ((x > LAMBDA - MU)&&((y < BOXYMIN + MU)||(y > BOXYMAX - MU)))
|
||||
far = 0;
|
||||
|
||||
if (far) /* accept new circle */
|
||||
{
|
||||
printf("New circle at (%.3f,%.3f) accepted\n", x, y);
|
||||
circlex[ncircles] = x;
|
||||
circley[ncircles] = y;
|
||||
circlerad[ncircles] = MU;
|
||||
circleactive[ncircles] = 1;
|
||||
circlecolor[ncircles] = 0;
|
||||
newcircle[ncircles] = 0;
|
||||
circles[ncircles].xc = x;
|
||||
circles[ncircles].yc = y;
|
||||
circles[ncircles].radius = MU;
|
||||
circles[ncircles].active = 1;
|
||||
circles[ncircles].color = 0;
|
||||
circles[ncircles].new = 0;
|
||||
active_poisson[ncircles] = 1;
|
||||
circles[ncircles].double_circle = 0;
|
||||
circles[ncircles].partner = ncircles;
|
||||
ncircles++;
|
||||
n_p_active++;
|
||||
naccepted++;
|
||||
|
||||
/* take care of periodic boundary conditions */
|
||||
if (B_DOMAIN == D_CIRCLES_IN_TORUS)
|
||||
{
|
||||
n = ncircles - 1;
|
||||
if (x < - LAMBDA + MU)
|
||||
{
|
||||
circles[ncircles].xc = x + 2.0*LAMBDA;
|
||||
circles[ncircles].yc = y;
|
||||
circles[ncircles].radius = MU;
|
||||
circles[ncircles].active = 1;
|
||||
circles[ncircles].color = 0;
|
||||
circles[ncircles].new = 0;
|
||||
active_poisson[ncircles] = 1;
|
||||
circles[n].double_circle = 1;
|
||||
circles[ncircles].double_circle = 0;
|
||||
circles[n].partner = ncircles;
|
||||
circles[ncircles].partner = n;
|
||||
ncircles++;
|
||||
n_p_active++;
|
||||
naccepted++;
|
||||
}
|
||||
else if (x > LAMBDA - MU)
|
||||
{
|
||||
circles[ncircles].xc = x - 2.0*LAMBDA;
|
||||
circles[ncircles].yc = y;
|
||||
circles[ncircles].radius = MU;
|
||||
circles[ncircles].active = 1;
|
||||
circles[ncircles].color = 0;
|
||||
circles[ncircles].new = 0;
|
||||
active_poisson[ncircles] = 1;
|
||||
circles[n].double_circle = 1;
|
||||
circles[ncircles].double_circle = 0;
|
||||
circles[n].partner = ncircles;
|
||||
circles[ncircles].partner = n;
|
||||
ncircles++;
|
||||
n_p_active++;
|
||||
naccepted++;
|
||||
}
|
||||
if (y < BOXYMIN + MU)
|
||||
{
|
||||
circles[ncircles].xc = x;
|
||||
circles[ncircles].yc = y + BOXYMAX - BOXYMIN;
|
||||
circles[ncircles].radius = MU;
|
||||
circles[ncircles].active = 1;
|
||||
circles[ncircles].color = 0;
|
||||
circles[ncircles].new = 0;
|
||||
active_poisson[ncircles] = 1;
|
||||
circles[n].double_circle = 1;
|
||||
circles[ncircles].double_circle = 0;
|
||||
circles[n].partner = ncircles;
|
||||
circles[ncircles].partner = n;
|
||||
ncircles++;
|
||||
n_p_active++;
|
||||
naccepted++;
|
||||
}
|
||||
else if (y > BOXYMAX - MU)
|
||||
{
|
||||
circles[ncircles].xc = x;
|
||||
circles[ncircles].yc = y - BOXYMAX + BOXYMIN;
|
||||
circles[ncircles].radius = MU;
|
||||
circles[ncircles].active = 1;
|
||||
circles[ncircles].color = 0;
|
||||
circles[ncircles].new = 0;
|
||||
active_poisson[ncircles] = 1;
|
||||
circles[n].double_circle = 1;
|
||||
circles[ncircles].double_circle = 0;
|
||||
circles[n].partner = ncircles;
|
||||
circles[ncircles].partner = n;
|
||||
ncircles++;
|
||||
n_p_active++;
|
||||
naccepted++;
|
||||
}
|
||||
}
|
||||
}
|
||||
// else printf("Rejected\n");
|
||||
}
|
||||
@@ -314,6 +407,9 @@ void init_circle_config_pinball(int circle_pattern)
|
||||
}
|
||||
|
||||
printf("Generated %i circles\n", ncircles);
|
||||
|
||||
// for (i=0; i<ncircles; i++)
|
||||
// printf("Circle %i at (%.3f, %.3f), partner %i\n", i, circlex[i], circley[i], partner_circle[i]);
|
||||
break;
|
||||
}
|
||||
// case (C_LASER):
|
||||
|
||||
Reference in New Issue
Block a user