2011-12-02 3 views
-2

현재 다중 좌표계를 사용하는 태양계가 OpenGL에 있습니다. 즉, 태양은 태양 주위를 도는 행성에 대한 자체의 궤도 좌표계와 태양을 나타내는 원에 대한 자체 좌표계를 가지고 있습니다. 모든 행성에는 모양을위한 자체 orbitCS와 CS가 있습니다.그래픽 - TRIANGLE_FAN의 반지름 결정 월드 좌표에서 원 및 로컬 좌표

GL_TRIANGLE_FAN을 사용하여 행성의 구체를 만듭니다.

그런 다음 마우스 좌표를 받으면 glUnProject를 사용하여 창에서 세계 좌표로 변환합니다. 그런 다음,이 월드 좌표를 로컬 좌표로 변환하여 마우스 클릭이 행성 모양 안에 있는지 여부를 확인하려고합니다. 그렇다면 행성의 이름을 출력합니다. 어려운 부분은 행성 클릭 인식이 작동하도록하는 것입니다.

제대로 수행하는 방법을 알아낼 수 없습니다. 내가 사용하는 수식은 (pow (target_LCS [0], 2) + pow (target_LCS [1], 2) < pow (radius, 2)가 올바르게 작동하지 않는 것처럼 보입니다. 클릭이 모양에 있는지 여부를 결정하는 대신 사실이 아닙니다. 또한 TRIANGLE_FAN을 사용하여 반경을 올바르게 결정하는 방법을 알지 못합니다.

답변

0

OpenGL은 객체에 대해 아무것도 모릅니다. GL_TRIANGLE_FAN으로 구를 만들 때 OpenGL에게 구를 그리는 위치와 반경을 알려주는 코드가 있어야합니다. 교차로 테스트를 원하면 행성 반경과 행성 위치 을 직접 추적해야합니다.. 그리기 코드에서 지정한 위치와 반지름을 사용하십시오.

관련 문제