通过查看这张图片,我想您会很好地理解我的问题:
(图片已删除 - 网址不再有效,现在返回广告)
所以基本上我想要一个函数,它将一个对象作为参数,并根据我之前添加的对象数量为该对象提供正确的坐标。
假设我要将所有这些对象添加到一个数组中:
objectArray[]
每次添加新对象时:
objectArray.add(对象)
object.x
和object.y
坐标将根据某种算法设置:
object.x = ?
object.y = ?
(我在 Java 工作)
感谢您的帮助。
最佳答案
这是不依赖于循环的封闭形式的解决方案...我对 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);
}
关于java - 坐标算法——绕中心旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9135823/