1

假设我有一个矩形对象。我想沿着一条路径移动它。是否有可能不仅根据一个点,而且根据它上面的两个点来定位这个对象?例如,物体上的点 A 在 125,220,在这种情况下我希望点 B 在 140,235。这样我想设置物体的方向。在 Objective-c 中(我也假设在其他语言中)当我们说“图形对象的位置”时,我们只考虑一个点,通常是左下角。但是仅根据该点定位对象只会在另一个点重绘左下角的对象,其余部分将根据对象的高度和宽度确定,这不是我想要的。

编辑:在此处输入图像描述

正如您所看到的(可能这是您自然所期望的),对象将作为一个盒子从一个点移动到另一个点,因为只有一个点确定它的位置。你问我为什么需要不同的东西。因为我有一个计时器和一条弯曲的路径。每次计时器滴答作响时,我都需要我的对象位于不同的位置(倾倒点数组中的下一个位置)。因此,我没有添加到 X 和 Y 坐标,而是明确地告诉对象在某个位置。这样我想实现我的对象沿着弯曲路径的正常移动。当物体的前部移动到某个点时,我需要后部也移动到某个点。

4

1 回答 1

0

我终于找到了一种方法来做到这一点。我必须根据前一点和下一点旋转对象。因此,假设对象将沿着的路径上有点 A、B、C、D、E、F、G、H。如果汽车在 D 点,要计算旋转角度,我执行以下操作:

myObject.rotation=-atan((D.y-C.y)/(D.x-C.x))/3.141592*180;

如您所见,这只是数学。可以应用微调以获得更好、更平滑的旋转。例如,在这里我从当前位置的 Y 中减去前一个位置的 Y,然后我对 X 做同样的事情,然后我得到它们比率的负反正切。但你可以做

-atan((E.y-C.y)/(E.x-C.x))/3.141592*180;

选择正确的位置来减去它们的 x 和 y 坐标将导致正确且平滑的旋转。

我想你可以猜到 3.141592 是 M_PI;

于 2012-10-06T06:21:47.010 回答