Нарисуй стрелку в opengl ES - PullRequest
       16

Нарисуй стрелку в opengl ES

3 голосов
/ 26 октября 2009

1) Я знаю начальную точку стрелки и знаю конечную точку.

Я понятия не имею, как нарисовать головку стрелки ... Я предполагаю, что две другие точки головы находятся под углом 45 градусов от конечной точки ...

Кто-нибудь знает формулы, необходимые для этого?

Ответы [ 2 ]

7 голосов
/ 26 октября 2009

Уэйд дает хороший ответ на часть 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;
}
1 голос
/ 26 октября 2009

Почему бы это не сработало?

1) Нарисуйте треугольник для головы (что означает рисовать с помощью GL_TRIANGLES, а не рисовать 3 отрезка линии, образующих треугольник)

2) Нарисуйте отрезок, проходящий от средней точки основания треугольника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...