坐标算法 – 围绕中心旋转

通过查看此图像,我认为您将很好地理解我的问题:

(图片已删除 – url不再有效,现在返回广告)

所以基本上我想要一个函数,它将一个对象作为参数,并根据我之前添加的对象数量为该对象提供正确的坐标。

假设我将所有这些对象添加到数组中:

objectArray[] 

每次我添加一个新对象:objectArray.add(object)

object.xobject.y坐标将根据某种算法设置:

 object.x = ? object.y = ? 

(我在Java工作)

谢谢你的帮助。

这是一个不依赖于循环的封闭forms的解决方案…我不熟悉Java,所以它在C#中,但它使用基本操作。

 static void SpiralCalc(int i) { i -= 2; // Origin coordinates int x = 100, y = 100; if (i >= 0) { int v = Convert.ToInt32(Math.Truncate(Math.Sqrt(i + .25) - .5)); int spiralBaseIndex = v * (v + 1); int flipFlop = ((v & 1) << 1) - 1; int offset = flipFlop * ((v + 1) >> 1); x += offset; y += offset; int cornerIndex = spiralBaseIndex + (v + 1); if (i < cornerIndex) { x -= flipFlop * (i - spiralBaseIndex + 1); } else { x -= flipFlop * (v + 1); y -= flipFlop * (i - cornerIndex + 1); } } // x and y are now populated with coordinates Console.WriteLine(i + 2 + "\t" + x + "\t" + y); }