public static void CreateLayer(int nLayer, double r, LinkedList al) {
int n = 0, m = 0; //n 是光纤的层数,m 是每层第几根光纤
int fiber_ID = 0;
double x = 0.0, y = 0.0;
double rate = 2 * r / 33.0;
//double rate = 2 * SIN60 * r / 25.6;
double s = 688.5 / Math.sqrt(2.0) * rate;
for (n = 1; n <= nLayer; n++) {
for (m = 0; m < 6 * n; m++) {
switch (m / n) {
case 0:
x = rate * 25.6 * ( -n * SIN30 + m);
y = rate * 25.6 * (SIN60 * n);
break;
case 1:
x = rate * 25.6 * (m * SIN30);
y = rate * 25.6 * (SIN60 * (2 * n - m));
break;
case 2:
x = rate * 25.6 * (2.0 * n - m * SIN30);
y = rate * 25.6 * ( -SIN60 * (m - 2 * n));
break;
case 3:
x = rate * 25.6 * (3.5 * n - m);
y = rate * 25.6 * ( -SIN60 * n);
break;
case 4:
x = rate * 25.6 * (1.5 * n - SIN30 * m);
y = rate * 25.6 * (SIN60 * (m - 5.0 * n));
break;
case 5:
x = rate * 25.6 * ( -3.5 * n + SIN30 * m);
y = rate * 25.6 * (SIN60 * (m - 5.0 * n));
break;
}
//
if ((Math.sqrt(x * x + y * y) < ((1750.0 - 21.0) / 2.0) * rate) //edge
&& (Math.sqrt(x * x + y * y) > ((58.0 + 25.6) / 2.0) * rate) //center
&&
(Math.sqrt((x - s) * (x - s) + (y - s) * (y - s)) >
((120.0 + 33.0) / 2.0) * rate) //挖四个洞
&&
(Math.sqrt((x - s) * (x - s) + (y + s) * (y + s)) >
((120.0 + 33.0) / 2.0) * rate)
&&
(Math.sqrt((x + s) * (x + s) + (y - s) * (y - s)) >
((120.0 + 33.0) / 2.0) * rate)
&&
(Math.sqrt((x + s) * (x + s) + (y + s) * (y + s)) >
((120.0 + 33.0) / 2.0) * rate)
) //232.5)//
al.add(new FocalFiber(fiber_ID, x, y, r));
fiber_ID++;
}
}
}