Coy*_*yod 5 php algorithm hexagonal-tiles
帮助找到在六边形场上通过螺旋创建单元格的算法.
看图像:
alt text http://img685.imageshack.us/img685/927/fieldr.png
让我们想象一个无量纲的二维数组.X轴是蓝线,Y是水平,螺旋是红色.
我需要通过螺旋将中心点x0y0的单元格添加到N点
请告诉我解决问题的方法.谢谢!
我建议稍微更改细胞编号,这样当你向下和向右(或向上和向左)时,X保持不变.那么像下面的简单算法应该工作:
int x=0, y=0;
add(x, y); // add the first cell
int N=1
for( int N=1; <some condition>; ++N ) {
for(int i=0; i<N; ++i) add(++x, y); // move right
for(int i=0; i<N-1; ++i) add(x, ++y); // move down right. Note N-1
for(int i=0; i<N; ++i) add(--x, ++y); // move down left
for(int i=0; i<N; ++i) add(--x, y); // move left
for(int i=0; i<N; ++i) add(x, --y); // move up left
for(int i=0; i<N; ++i) add(++x, --y); // move up right
}
Run Code Online (Sandbox Code Playgroud)
这会产生如下点:
转型后我们得到: