java - 坐标算法——绕中心旋转

标签 java algorithm grid coordinates

通过查看这张图片,我想您会很好地理解我的问题:

(图片已删除 - 网址不再有效,现在返回广告)

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

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

objectArray[]

每次添加新对象时: objectArray.add(对象)

object.xobject.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/

相关文章:

java - 在哪里可以下载 JNLP 1.2?

arrays - 圆形阵列中的间隔元素

wpf - 在 WPF 网格中绘制对角线

java - 将操作系统命令的输出写入控制台

java - 如何使用结果集中的两个字段创建 JSON 数组?

algorithm - 给定平面上的加权点,找到 U 方 block 的位置,使总封闭重量最大化

algorithm - 最短的数字串是什么,其中包含0到1000之间的所有数字

css - 砌体去除排水沟和排水沟宽度

Magento 管理网格将数据从 Action 发送到 Controller

java - 如何将 Java JSpinner 数字转换为 int?