Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标C-根据物体上的两点定位物体_Objective C - Fatal编程技术网

Objective c 目标C-根据物体上的两点定位物体

Objective c 目标C-根据物体上的两点定位物体,objective-c,Objective C,假设我有一个矩形的物体。我想沿着一条路径移动它。是否可以不仅根据一个点,而且根据其上的两个点来定位此对象?例如,对象上的点A位于125220处,在本例中,我希望点B位于140235处。这样,我希望设置对象的方向。 在Objective-c中(我也假设在其他语言中),当我们说“图形对象的位置”时,我们只想到一个点,通常是左下角。但是定位 仅根据该点的对象将仅在另一点的左下角重新绘制对象,其余部分将根据对象的高度和宽度确定,这不符合我的要求 编辑: 正如你所看到的(这可能是你自然期望的),物体会像盒

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

编辑:


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

我终于找到了做这件事的方法。我必须根据前面和后面的点旋转对象。因此,假设物体将沿着的路径上有点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

那你还想要什么?相对于一个点的定位是唯一合乎逻辑的事情(假设物体不是由口香糖制成的…)不清楚你在问什么。你能模拟一张图片来解释吗?我不确定我是否正确理解你的问题,但是如果你需要旋转或缩放你的形状,而不修改它,请使用:
CGContextRef CGContextRef=(CGContextRef)[[NSGraphicsContext currentContext]graphicsPort];CGContextSaveGState(cgContext);CGContextRotateCTM(cgContext,角度);[形状绘制];CGContextRestoreGState(cgContext)。看看CGContext{旋转、缩放、平移}函数。