문제

1) 나는 화살표의 시작점을 알고 있으며 엔드 포인트를 알고 있습니다.

나는 화살의 머리를 그리는 방법을 모른다 .. 나는 머리의 다른 두 지점이 끝점에서 45도 각도라고 가정한다.

이 작업을 수행하는 데 필요한 공식을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

Wade는이 질문의 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) 머리의 삼각형을 그리십시오 (GL_TRIANGLES로 그리기, 삼각형을 형성하는 3 개의 선 세그먼트를 그리는 것을 의미합니다)

2) 삼각형의 바닥의 중간 점에서 연장되는 선 세그먼트를 그립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top