Objective-C - 根据对象上的两个点定位对象

时间:2012-09-16 19:51:06

标签: objective-c

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

编辑:enter image description here

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

1 个答案:

答案 0 :(得分: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;