CGPoints如何成为载体?

时间:2013-09-25 05:02:11

标签: objective-c math vector cgpoint

假设您有以下方法:

CGPoint vectorSubtraction(CGPoint a, CGPoint b) {
    return CGPointMake(a.x - b.x, a.y - b.y);
}

您使用以下几点:

Point A: (1,4)
Point B: (10,3)

如果您使用vectorSubtraction方法,则会获得:

(9,-1)的点。

现在,我会理解(9,-1)是从第一个点到第二个点的向量(它是),但我不明白为什么向量本身是一个点。根据定义,矢量具有方向和幅度。一个点怎么能有方向和幅度?

2 个答案:

答案 0 :(得分:5)

对于那些对这个问题的背景感兴趣的人,它几乎肯定是Ray Wenderlich's Sprite Kit Tutorial for Beginners形式。搜索标题"Shooting Projectiles"的链接。

就可以将某个点视为向量的情况而言,如果向量的另一端是隐式而不是显式,则可以。

在这种特殊情况下,该点被视为从原点(0,0)到给定点的向量。

所以实际的矢量计算是(你似乎有点反转的点):

(0,0)->(10,3) - (0,0)->(1,4) = (0,0)->(9,-1)

答案 1 :(得分:3)

从(实际上)不同的方向接近问题:

  

一个点怎么能有方向和幅度?

所以这样:

double direction = atan2(point.y, point.x);
double magnitude = hypot(point.x, point.y);

古老的笛卡尔坐标系。