2009-10-26 225 views
2

1)我知道箭頭的起點,並且我知道端點。在opengl中繪製一個箭頭ES

我不知道如何繪製箭頭的頭..我假設頭部的另外兩點是45度角從終點而去...

任何人都知道的公式需要做到這一點?

回答

6

韋德給出了這個問題的OpenGL部分的一個很好的答案;我會嘗試回答矢量數學部分。下面是一些僞代碼從我的頭頂:

Triangle GenerateArrowHead(vec2 p1, vec2 p2) 
{ 
    // Compute the vector along the arrow direction 
    vec2 v = Normalize(p2 - p1) 

    // Compute two perpendicular vectors to v 
    vec2 vPerp1 = vec2(-v.y, v.x) 
    vec2 vPerp2 = vec2(v.y, -v.x) 

    // Compute two half-way vectors 
    vec2 v1 = Normalize(v + vPerp1) 
    vec2 v2 = Normalize(v + vPerp2) 

    Triangle tri; 
    tri.a = p2; 
    tri.b = p2 + ArrowHeadSize * v1; 
    tri.c = p2 + ArrowHeadSize * v2; 
    return tri; 
} 
+0

您可以通過一些常數乘以vperp1和vperp2改變頭的角度:使用值<1獲得小於45度,值> 1獲得更大超過45度。 – 2010-10-22 18:59:24

1

爲什麼這不起作用?

1)畫出的頭部(意味着平局與GL_TRIANGLES一個三角形,而不是繪製形成三角形3個線段)

2)畫出從三角形的底邊的中點延伸的線段。