2012-06-18 140 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;