我不确定我是否完全理解您的问题,但这是我的尝试。
public static List<int[]> getEvenSpacedPoints(int x0, int x1, int y0,
int y1, int z0, int z1, int samplePerSide) {
List<int[]> list = new ArrayList<>();
int xSpacing = (x1 - x0) / samplePerSide;
int ySpacing = (y1 - y0) / samplePerSide;
int zSpacing = (z1 - z0) / samplePerSide;
for (int i = 0; i < samplePerSide; i++) {
for (int j = 0; j < samplePerSide; j++) {
for (int w = 0; w < samplePerSide; w++) {
int xPoint = xSpacing * i;
int yPoint = ySpacing * j;
int zPoint = zSpacing * w;
int[] point = new int[] { xPoint, yPoint, zPoint };
list.add(point);
}
}
}
return list;
}
和
List<int[]> setOfSamplesFromCube = getEvenSpacedPoints(0, 10, 0, 10, 0,
10, 5);
for (int[] point : setOfSamplesFromCube) {
String ret = "";
for (int value : point) {
ret += value + ",";
}
System.out.println(ret);
}
输出:
0,0,0,
0,0,2,
0,0,4,
0,0,6,
0,0,8,
0,2,0,
0,2,2,
0,2,4,
0,2,6,
0,2,8,
0,4,0,
0,4,2,
0,4,4,
0,4,6,
0,4,8,
0,6,0,
0,6,2,
0,6,4,
0,6,6,
0,6,8,
0,8,0,
0,8,2,
0,8,4,
0,8,6,
0,8,8,
2,0,0,
2,0,2,
2,0,4,
2,0,6,
2,0,8,
2,2,0,
2,2,2,
2,2,4,
2,2,6,
2,2,8,
2,4,0,
2,4,2,
2,4,4,
2,4,6,
2,4,8,
2,6,0,
2,6,2,
2,6,4,
2,6,6,
2,6,8,
2,8,0,
2,8,2,
2,8,4,
2,8,6,
2,8,8,
4,0,0,
4,0,2,
4,0,4,
4,0,6,
4,0,8,
4,2,0,
4,2,2,
4,2,4,
4,2,6,
4,2,8,
4,4,0,
4,4,2,
4,4,4,
4,4,6,
4,4,8,
4,6,0,
4,6,2,
4,6,4,
4,6,6,
4,6,8,
4,8,0,
4,8,2,
4,8,4,
4,8,6,
4,8,8,
6,0,0,
6,0,2,
6,0,4,
6,0,6,
6,0,8,
6,2,0,
6,2,2,
6,2,4,
6,2,6,
6,2,8,
6,4,0,
6,4,2,
6,4,4,
6,4,6,
6,4,8,
6,6,0,
6,6,2,
6,6,4,
6,6,6,
6,6,8,
6,8,0,
6,8,2,
6,8,4,
6,8,6,
6,8,8,
8,0,0,
8,0,2,
8,0,4,
8,0,6,
8,0,8,
8,2,0,
8,2,2,
8,2,4,
8,2,6,
8,2,8,
8,4,0,
8,4,2,
8,4,4,
8,4,6,
8,4,8,
8,6,0,
8,6,2,
8,6,4,
8,6,6,
8,6,8,
8,8,0,
8,8,2,
8,8,4,
8,8,6,
8,8,8,
这包括起点(如果想省略,则从 1 开始循环)并且“简单”,因为我传递给它的立方体有很好的边可以被 5 整除,否则整数除法会破坏这一点,但你可以看到如何轻松更改它以返回双重列表。
我将开始尝试 D 维案例..