2012-06-18 101 views
0

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

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

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

对不起,这个可怕的例子,但我不知道如何做到这一点。此外,AB线总是处于某个角度,它不会像这里那样直线。

回答

1

鉴于中点m和垂直矢量v,你需要正常化v然后在v的方向m移动。因此,像这样:

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;