programing tip

OpenGL이 라디안 대신 각도를 사용하는 이유는 무엇입니까?

itbloger 2020. 11. 9. 07:54
반응형

OpenGL이 라디안 대신 각도를 사용하는 이유는 무엇입니까?


OpenGL 디자이너는 수학을 두려워하지 않았으며 선형 대수에 대한 지식은 가장 단순한 OpenGL 응용 프로그램을 제외한 모든 분야에 필수적입니다. OpenGL 프로그래머는 라디안 각도에 익숙하다고 가정 할 수 있습니다.

수학적으로 라디안은 모든면에서 각도보다 더 우아합니다. 또한 실용적인 이점이 있습니다.

  • C 표준 라이브러리는 라디안을 사용합니다.
  • 다른 거의 모든 라이브러리는 라디안을 사용합니다.
  • 라디안은 원호의 길이와 같은 일부 계산에서 더 편리합니다.

그렇다면 OpenGL 디자이너는 왜 기능을 지정 glRotatef하고 gluPerspective학위를 사용 하기로 결정 했습니까?

(실제적으로 중요하지 않으며 어쨌든 변경되지 않을 것임을 알고 있습니다. 궁금해서 OpenGL.org에서 답을 찾을 수 없습니다.)


일반인은 각도 계산에 더 익숙하기 때문에 OpenGL은 간단하게 사용됩니다. 각도에서 작동하는 모든 기능은 "높은 수준"기능입니다.

OpenGL 자체의 경우 라디안을 수신하든 각도를 수신하든 차이가 없습니다. 어쨌든 내부적으로 변환 행렬로 변환되므로 둘 중 하나를 사용하는 계산상의 이득이 없습니다.

그렇다면 학위를 사용하도록 허용 할 수 있다면 왜 사람들을 복잡하게 만들까요? OpenGL에서 진지하게 코딩하는 사람은 어쨌든 쿼터니언에서 계산 된 자신의 행렬을 제공 할 것입니다.

같은 정신으로 우리는 매트릭스가 모든 측면에서 더 우아하고 더 높은 수준의 제어를 허용하기 때문에 glRotatef그리고 gluPerspective어쨌든 물어볼 수 있습니다.

포인트 별 :

  • 우아함-매트릭스는 모든면에서 더 우아합니다.
  • C 라이브러리-C 라이브러리는 계산상의 이유 때문에 그것들을 사용하고, 각도를 취하는 GL 함수는 계산이 많은 작업 (행렬을 직접 사용)에 사용하기위한 것이 아니며, 아마도 구현에는 어쨌든 각도에 대한 조회 테이블이있을 것입니다.
  • 다른 라이브러리-Clib와 동일한 이유로 C 라이브러리를 따르고 있습니다. 또한 사실이 아닙니다. 많은 C ++ 라이브러리가 선택을 허용하고 일부는 후자를 사용합니다.
  • 계산의 편리함-중요하지 않음-내부 표현은 행렬이고, 효율적인 계산을 위해 룩업 테이블을 사용하여 계산할 수 있음-각도에 대한 직접적인 작업이 없으므로 표현은 중요하지 않습니다.

또한 참고 : 각도를 사용하는 모든 함수는 현재 표준 (3.2)에서 더 이상 사용되지 않습니다. glRotatef은 IS 기능도 가지고, 또는 사실상 모든 각도에있다. glu대용량 배포를위한 것이 아니므로 가독성에 맞게 조정 gluPerspective(... 60.0f..)되었으며 FOV 제공 측면에서 훨씬 더 읽기 쉽고 "표준"입니다 gluPerspective( ... M_PI / 3.0f ... ).

최종 참고 사항 :


나는 OpenGL을 염두에두고 최종 사용자와 설계 되었기 때문에 하나의 중요한 각도를 지정할 수 있기 때문에,도를 (사용 된 말 것 90, 180, 270...) 정수 만, 그래서 부동 소수점에 대한 필요가 없습니다 GL_PI상수.


90도 또는 180 도와 같은 특정 각도에 대해 정확한 회전 행렬을 얻을 수 있어야하기 때문이라고 생각합니다. 여기에 다른 사람들이 지정한 것처럼 90도 대신 pi / 2를 사용하면 반올림 오류가 거의 90도 회전을 수행하는 변환 행렬로 이어질 수 있습니다 .


코드는 읽기 쉽고 초보자를위한 학습 곡선을 편하게하며 빠른 해킹이 가능합니다.

이미 언급했듯이-학위는 장점이 있습니다-인간은 학위에 더 잘 익숙합니다. 비교 : 0.78539816339744830961566084581988 ... 예를 들어 45도까지 : /.

OpenGL의 고급 사용을 위해 어쨌든 자신의 행렬을 제공합니다.


글쎄요, 대부분의 경우에 일어나는 일은 당신이 라디안에서 각도로 그리고 다시 라디안으로 변환하기 위해 Math 라이브러리를 사용한다는 것입니다. 나는 이전의 멋진 포스터에서 말한 대부분에 동의합니다.

사람이 더 읽기 쉽습니다.

참고 URL : https://stackoverflow.com/questions/2146884/why-does-opengl-use-degrees-instead-of-radians

반응형