📄 spiralbucketorder.java
字号:
package org.sunflow.core.bucket;
import org.sunflow.core.BucketOrder;
public class SpiralBucketOrder implements BucketOrder {
public int[] getBucketSequence(int nbw, int nbh) {
int[] coords = new int[2 * nbw * nbh];
for (int i = 0; i < nbw * nbh; i++) {
int bx, by;
int center = (Math.min(nbw, nbh) - 1) / 2;
int nx = nbw;
int ny = nbh;
while (i < (nx * ny)) {
nx--;
ny--;
}
int nxny = nx * ny;
int minnxny = Math.min(nx, ny);
if ((minnxny & 1) == 1) {
if (i <= (nxny + ny)) {
bx = nx - minnxny / 2;
by = -minnxny / 2 + i - nxny;
} else {
bx = nx - minnxny / 2 - (i - (nxny + ny));
by = ny - minnxny / 2;
}
} else {
if (i <= (nxny + ny)) {
bx = -minnxny / 2;
by = ny - minnxny / 2 - (i - nxny);
} else {
bx = -minnxny / 2 + (i - (nxny + ny));
by = -minnxny / 2;
}
}
coords[2 * i + 0] = bx + center;
coords[2 * i + 1] = by + center;
}
return coords;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -