标准化向量的方向

时间:2013-04-15 01:57:45

标签: math

我想这更像是一个数学问题,但请耐心等待我:)

我有一个定义如下的向量:

 var direction:b2Vec2 = new b2Vec2(_target.x - this.x, _target.y - this.y);
 direction.Normalize();

我使用

   _body.SetLinearVelocity(new b2Vec2(direction.x*2, direction.y*2));

推动身体前进到目标。

我的问题是如何才能找到我身体的相对位置。例如,从该标准化向量,我如何判断目标是在右边,左边,上边还是下边?

我想使用标准化的方向向量来获取我的身体相对于目标的“位置”。怎么可能?

另外,我只需要将相对位置标准化为四个基本方向。

2 个答案:

答案 0 :(得分:1)

让我们考虑一些案例,并尝试形成直观的理解 -

1)相对于全局坐标,在(2,2)和身体(-1,1)处的目标

你的方向向量是(3,1)。由于两个成分都是正的,因此目标位于身体的右侧和上方。

1)相对于全局坐标,在(2,-2)和(-1,1)处的物体上瞄准

你的方向向量是(3,-3)。由于x分量是正的,因此目标位于身体的右侧。由于y分量是负的,因此目标在身体下方。

如果您在2D轴上绘制这些点并计算方向向量,这些将变得明显。

答案 1 :(得分:1)

这里的矩阵转换:

   _target.y-this.y   _target.x-this.x
 - _target.x-this.x   _target.y-this.y

将您的矢量(并将其缩放x ^ 2 + y ^ 2,但这无关紧要)旋转到x轴。将相同的变换应用于正文的位置,然后使用两个坐标的符号来标识它相对于原始矢量的哪个象限。