spiralbucketorder.java
来自「Sunflow是一个照片级的渲染系统」· Java 代码 · 共 41 行
JAVA
41 行
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 + =
减小字号Ctrl + -
显示快捷键?