2012-01-05 5 views
1

나는 게임을하고 있는데 기본 클래스 Entity을 쓰고 있습니다. 많은 엔티티가 입자처럼 동작 할 것이므로 (2D로 회전) 각도 대신 회전을 사용하고 싶습니다. 그러나 OpenGL을 사용하고 있기 때문에 나는 회전의 법선을 가질 필요가 있습니다. 법선에서 각도로 변환하는 가장 빠른 방법은 무엇이며 그 반대도 마찬가지입니다. 나는 atan2sincos 등과 같은 삼각 함수를 사용할 수 있다는 것을 알고 있지만 더 빠른 방법이 있다고 확신합니다. 어떤 도움이나 방향을 주시면 감사하겠습니다.법선을도로 변환하는 방법은 무엇입니까?

enter image description here

+0

법선은 항상 표면에서 90도입니다. 내가 뭘했는지 모르겠다. – MichaelHouse

+0

아니 이차원 적으로. 다이어그램 만들기. –

+0

알아낼 수없는 경우 단순히 조회 테이블을 만들 수도 있습니다. ': P –

답변

8

하면 2 개 차원으로 제한하고 당신은 x 축에서 각도로 방향 벡터 (X, Y)를 변환하려는 경우, 다음 atan2(y, x) 거의 확실히 당신의 가장 빠른 될 것입니다 x와 y의 가능한 값을 꽤 사소한 경우로 제한하지 않는 한, 물론 Y 축에서 각도를 얻으려면 atan2(x, y)을 사용하십시오. 이 각도는 라디안 단위입니다. 각도로 변환하려면 180/pi를 곱합니다. 이 작업에는 사소한 시간이 필요합니다.

드로잉하는 그림은 atan2(x, y) * 180/Math.PI이 원하는 결과를 제공함을 나타냅니다.

코드를 프로파일 링하고이 계산에서 병목 현상이있는 것으로 판단되지 않는 한 속도와 관련이 없습니다 (가능성이 낮음).

+0

최종 단락을 위해 Upvoted, 많은 사람들이 그 실수를합니다. – SHiRKiT

관련 문제