Domanda

1) Conosco il punto iniziale della freccia e conosco il punto finale.

Non ho idea di come disegnare la testa della freccia .. Suppongo che gli altri due punti della testa siano a 45 gradi di distanza dal punto finale ...

Qualcuno sa delle formule necessarie per farlo?

È stato utile?

Soluzione

Wade dà una buona risposta per la parte OpenGL di questa domanda; Proverò a rispondere alla porzione matematica vettoriale. Ecco alcuni pseudocodici dalla parte superiore della mia testa:

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;
}

Altri suggerimenti

Perché non dovrebbe funzionare?

1) Disegna un triangolo per la testa (significa disegnare con GL_TRIANGLES, non disegnare 3 segmenti di linea che formano un triangolo)

2) Disegna un segmento di linea che si estende dal punto medio della base del triangolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top