绘图点垂直于通过cocos2d中途的线

时间:2012-06-18 19:32:41

标签: objective-c cocos2d-iphone

所以我有一条线在两点之间绘制。让我们说A和B,我可以很容易地抓住Cocos2d中线的中点,我也可以很容易地计算出该线的向量和垂直向量。但是我的数学技能非常生疏,我不知道如何做到以下几点。

让我们说A和B之间的距离是50,所以中点是25.我想绘制一个与这条线垂直的点,距离它的距离为10。

      C
     /  \
    /    \
   /      \
  /        \
 /          \
A------------B

很抱歉这个可怕的例子,但我不知道该怎么做。另外AB线总是处于某个角度,它永远不会像在这里一样直。

1 个答案:

答案 0 :(得分:1)

鉴于中点m和垂直向量v,您需要对v进行标准化,然后从vm方向移动。所以像这样:

Vector2d nv = v / v.length(); // Assuming Vector2d is your vector class and length gives the length of v
Point2d newPoint = m + (nv * 10.0); // Assumes you can multiply a vector by a scalar

如果你不使用C ++,你可能需要像这样手动编写它:

Vector2d nv;
nv.x = v.x / v.length();
nv.y = v.y / v.length();
newPoint.x = m.x + nv.x * 10.0;
newPoint.y = m.y + nv.y * 10.0;