我正试图找到一种方法,将圆周上的n
个角度分布开来(假设最多有360个角度,每个角度之间相差1度,因此为 0:1:359
)。
这些角度应根据需要生成,以使相邻角度之间的距离尽可能远。角度不能重复,也不能修改以适应新的角度。
例子:
0, 180, 90, 270, 135, 315, 225, 45
等等。
我尝试过编写它,但似乎无法完全理解如何编码。如果我稍微简化分配角度的方式,可能会更容易实现。
我尝试根据最后一个角度生成,同时计算当前“波浪”中生成的角度数,因为圆将被划分的方式将会上升(4次,8次等)。
package uniform_angles;
public class UniformAngles {
public static void main(String[] args)
{
int TOTAL_ANGLES = 360;
// init number of angles to generate
int numberOfAngles = 12;
// store positions in array
int[] positions = new int[numberOfAngles];
// init first angle (special case for 0)
int delta = 180;
positions[0] = 0;
int firstOrderPassCount = 1;
//int secondOrderPassCount = 1;
// generate
for (int i = 1; i < numberOfAngles; i++) {
if ((firstOrderPassCount*delta) == TOTAL_ANGLES) {
delta /= 2;
}
int nextPos = (positions[i-1] + delta) % TOTAL_ANGLES;
if ((nextPos % delta) == 0) {
positions[i] = (positions[i-1] + (2*delta)) % TOTAL_ANGLES;
}
firstOrderPassCount++;
}
for (int i = 0; i < numberOfAngles; i++) {
System.out.println(positions[i]);
}
}
}