게임 개발에서 라디안이 학위보다 선호되는 이유는 무엇입니까?


39

나는 라디안의 정의를 살펴 보았고 수학자들은 완전히 임의의 각도가 아닌 파이에서 파생되기 때문에 그것을 선호한다는 것을 알았습니다.

그러나 나는 게임 개발에 그것들을 사용해야 할 강력한 이유를 찾지 못했다. 아마도 관련된 수학적 이해가 완전히 없기 때문이다. 나는 언어에서 대부분의 sin / cos / tan 함수가 라디안으로 알고 있지만 누군가도 라이브러리 함수를 각도로 만들 수 있습니다 (pi를 사용할 때 내재 된 반올림 오류를 피할 수 있음).

이 의견이 여론 조사가되기를 원하지 않습니다. "라디안을 사용하는 것과 달리 왜냐하면 우리는 항상 그것들을 사용했기 때문입니다. 단지 나를 위해 (그리고 다른 사람들도) 그들이 무엇을 위해 좋은지를 이해하도록 돕기 위해서입니다.


2
한 가지 대답은 더 빠르다는 것입니다. 죄와 같은 기능을하기 전에 학위를 라디안으로 가리지 않아도됩니다. 좀 더 구체적으로 말하면 sin (x)를 계산하는 한 가지 방법은 Taylor 확장을 사용하는 것입니다. "x"는 확장을 위해 라디안이어야합니다.
user3728501

답변:


50

라디안은 수학에 사용되므로

  1. 그들은 원호의 호 길이를 측정합니다. 즉, 반지름의 원호의 각도 호 세타는 r * 세타입니다 (pi / 180 * r * 세타와 반대).
  2. 삼각 함수가 라디안으로 정의되면 코사인이 사인의 파생물이거나 sin (x) ~ = x 인 x와 같이 서로 간의 더 간단한 관계를 따릅니다. 각도로 정의하면 사인의 도함수는 pi / 180 * 코사인이되고, 작은 x의 경우 sin (x) ~ = pi / 180 * x가됩니다.

파이처럼 수학자는 아닙니다. 라디안은 실제로 위의 이유로 각도보다 각도 측정을 더 자연스럽게 선택합니다. pi / 180과 같은 요소가 사라지는 각도 측정 값입니다.

따라서 IMO에서 문제는 "라디안을 사용하는 이유"가 아니라 " 라디안을 사용 하지 않는 이유 "입니다. 다시 말해 라디안을 사용할 이유가 필요하지 않습니다. 각도 측정 의 기본 선택입니다. 학위를 사용해야 할 이유가 필요합니다. 예를 들어 앱의 사용자 인터페이스에서 각도를 각도로 표시하도록 선택할 수 있습니다. 앱 각도는 많은 사람들 (특히 아티스트)에게 더 친숙하기 때문입니다. 그러나 개인적으로 나는 각도가 아니라 라디안으로 각도를 생각하는 데 익숙해졌습니다.

나는 이것이 gamedev 문제가 아니라 수학적 문제이므로 수학을 사용하는 모든 분야에서 동일하기 때문에 당신에게 줄 구체적인 gamedev 예제가 없습니다.

(그렇지만, 각도를 사용할 때보 다 pi를 사용할 때 "내재적 반올림 오류"가 더 이상 없습니다 ... 각도는 항상 정수가 아닌 정수 여야합니다. 그렇지 않으면 반도 각도를 어떻게 표현할 것입니까? :) )


4
위와 동의 함. 한 번 256 번째 원을 기준으로 자체 표준을 사용하는 게임 라이브러리를 본 적이 있다고 덧붙입니다. 그 이유는 삼각 함수가 256 개의 항목이있는 조회 테이블을 사용하고 그 사이에 보간 되었기 때문입니다. 그렇게하지 않고 시리즈 확장에서 sin / cos / tan을 계산하거나 FPU에서 FSIN / FCOS 명령어를 사용하면 (대부분의 경우) 라디안으로 입력을 기대하므로 유지하여 변환을 저장하십시오 전체적으로 라디안으로 표시됩니다.
DMGregory

11
"라디안을 사용하지 않는 이유"- "4 학년 숙제는 라디안으로 악몽이 될 것"이라는 유일한 대답은 기꺼이 내릴 것입니다. :)
Sean Middleditch

5
@SeanMiddleditch 4 학년 수업은 Tau 로 이전해야합니다 . 타우는 360의 라디안 버전입니다. 수학을 간소화하고 전문가도 채택해야합니다.
Val

2
256 번째 원 또는 16384 번째 원은 각각 부호없는 바이트 또는 16 비트 숫자를 사용할 수 있으며, 더하기 / 빼기의 오버플로 / 언더 플로우는 올바른 일을합니다. 라디안을 사용하면 아마도 부동 소수점을 사용할 수 있습니다. 즉, 각도가 0에 가까울수록 정밀도가 높아지고 멀어 질수록 점점 더 작아집니다.
rjmunro

2
@Val : 타우는 학위와 같은 문제를 해결하지 못합니다. 도를 사용하면 정수로 비교적 작은 각도를 쉽게 측정 할 수 있습니다. 이것은 학생들이 여전히 손으로 모든 것을하고 있고 분수에 익숙하지 않은 초기 기하학을 가르치려고 할 때 중요합니다. 학생들에게 일반적인 "시계 바늘 각도"문제와 Pi / Tau 라디안이 아닌 각도에 깔끔하게 매핑되는 방법을 고려하십시오. 이는 학위가 게임에서 인기있는 한 가지 이유와 유사합니다. 학위 조회 테이블을 사용하는 것이 더 쉽고 빠르며 (이전) 필요에 따라 "충분히 좋은"해상도를 제공했습니다.
Sean Middleditch

4

나단의 대답은 매우 구체적입니다. 더 일반적인 견해를 제공하고 싶습니다.

대부분의 처리 장치에서 기본적으로 구현되는 가장 복잡한 수학적 개념은 실수 필드의 모델로 부동 소수점 숫자입니다. 시각적 지오메트리는 3 차원 실제 벡터 공간 ℝ³을 기반으로합니다. 좌표는 실수입니다. 기하 수량은 길이를 기준으로 하며 단위의 실제 배수입니다.

실수와 길이의이 기준 때문에, 실수를 기준으로 각도를 모델링하는 것이 실용적입니다. 길이. 라디안은 주어진 각도의 단위 원호의 길이입니다. 따라서 실수를 기준으로 다른 모든 단위와 가장 호환되는 각도의 모델입니다. 길이. 예를 들어, x의 작은 값에 대한 근사 sin x ~ x는 x 축에서 해당 점까지의 호를 기준으로 한 단위 원에있는 점의 y 좌표의 근사값입니다.

각도 길이 아니라는 것을 잊지 않아야 합니다. 두 개의 교차 직선으로 작성된 평면의 4 개 부분 중 하나입니다. 수량은 ℝ³의 평면과 유클리드 메트릭의 대칭으로 제한됩니다.

전체 회전의 일부로 각도 값을 고려할 때 끝점에서 서로 붙어있는 반 개방 간격 [0,1) (또는 (0,1])으로 각도를 모델링하는 것이 더 자연 스럽습니다. 360 번 전체 회전 (BTW : 이론적으로는 실수에 사용되는 십진법보다 낫습니다.)


0

라디안도 사용하지만 지정된 모든 이유로도 학위가 선호되는 이유는 최소한 정밀도와 오차 누적입니다. 한 번에 1도 전체 원을 회전하는 것은 정확합니다. 한 번에 전체 원 2PI / 360 라디안을 통해 회전하는 것은 아닙니다. 픽셀 격자에서 90도 회전을 4 번 수행하면 시작한 지점으로 정확하게 돌아갑니다. 픽셀 격자에서 2PI / 4 라디안 회전을 4 번 수행하는 것은 아닙니다.


이것을 경험적으로 테스트 한 결과, 단정도 부동 소수점 증분으로 라디안 단위로 90도 회전 한 4 번의 회전 후 총 오류는 1.75E-7 (5 백만에서 1 개 미만)입니다. 픽셀 그리드에서 회전하는 객체 / 프레임의 반경은 수백만 픽셀에 있어야 바깥 쪽 가장자리에서 1 픽셀의 오류가 발생합니다 (이 지점에서 0.5 선형 픽셀 이상). 다시 말해, 정밀도 손실은 실제로 문제가되지 않을 것입니다 (특히 이중을 사용하는 경우).
DMGregory

수치 적 관점에서는 맞지만, 딱딱한 가장자리에서 하나의 픽셀이 잘못된 값으로 튀어 나오면 시각적 관점에서 보면 망하게됩니다.
ddyer December

위의 "수백만 픽셀"참고 사항을 참조하십시오. 일반적인 크기의 스프라이트 (예 : 너비가 2048 픽셀 이하)의 경우 오류는 픽셀의 절반보다 작으므로 픽셀 그리드 자체의 고유 한 반올림으로 인해 지워집니다. 또한 한 번에 360/7도 회전하면 동일한 오류가 누적됩니다. 2의 거듭 제곱 (지수 범위에 대한 일부 제한)으로 표현할 수있는 증분을 고수하여 두 시스템에서 반올림 오류를 제거 할 수 있지만, 작은 증분을 누적하지 않는 코드로 변경하는 것이 더 쉽습니다.
DMGregory

@DMGregory 이것이 "Pi의 고유 한 반올림 오류"라는 의미였습니다. 다른 옵션은 싱글 / 더블을 사용하지 않고 숫자를 인자로 나타내는 방법 (계산 결과가 아니라 공식으로 2 * pi / 360을 나타내는 방법)을 사용하고 필요할 때만 결과를 계산하는 것입니다. "실제"프로그램이 있는지는 모르겠지만 Mathematica와 같은 항목은 항상 "0.333333 ....."대신 "1/3"을 "1/3"으로 나타낼 수 있습니다. 그러나 숫자를 겪은 후에 당신이 옳다고 생각합니다. 반올림 오류는 있지만 미미합니다
Michael Stum

2
1 도의 각도는 라디안보다 각도를 정확하게 표현하기가 더 쉬울 수 있습니다. 삼각 함수는 삼각 함수가 필요하기 때문에 물체를 정확하게 회전시키는 것은 아닙니다. cos 1 °pi / 180 만큼 반올림 오류의 영향을받습니다 .
Marcks Thomas

-3

두 가지 정의를 사용하고 현재 기능에 어느 것이 필요한지 조금 추측하는 것보다 선택하는 것이 낫다는 것에 동의합시다. 그런 다음 아크 길이를 사용하면 죄와 cos를 구현하는 것이 더 자연 스럽기 때문에 cmath가 그것을 구현하는 이유 일 수 있습니다. 게임은 종종 C ++ 또는 C로 작성되고 이미 죄와 cos가 구현되어 있기 때문에 그 정의를 따르는 것이 합리적입니다.

[당신은 레거시 opengl 나사


이것은 실제로 질문에 대답하지 않습니다. 대신 다른 답변에 댓글을 달았습니까?
Josh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.