계산기가 32°를 계산했는데 왜 표적이 반대 방향인가요?
두 개의 반대 방향은 동일한 기울기를 가질 수 있습니다. 비율만 남겨두면 실제로 필요한 기호를 버리는 것입니다.
목표가 왼쪽 하단에 있다는 것을 알고 있지만 프로그램은 위쪽과 오른쪽을 가리키는 화살표를 그립니다. 계산은 정확할 수 있습니다. 두 개의 음수를 먼저 나누면 얻은 양수 비율로 목표가 어느 사분면에 있는지 알 수 없습니다.
먼저 추측해 보세요
오른쪽으로 올라가는 두 선과 왼쪽으로 내려가는 두 선의 y/x 비율이 동일할 수 있습니까?
정답과 설명 보기
가능한 — 두 구성 요소의 부호가 동시에 바뀌고 비율은 변하지 않지만 방향은 180° 다릅니다.
그렇다면 경험과 과학을 연결하세요
먼저 목표가 위치한 사분면을 식별하십시오.
파란색 점의 위치는 x와 y에 의해 결정됩니다. 단일 매개변수 atan은 비율만 읽으며 두 개의 음수 기호는 나누기에서 상쇄됩니다.
atan(y/x)의 반환 범위는 −90° ~ 90°에 불과합니다.
두 구성 요소를 각각 atan2에 제공합니다.
atan2(y,x)는 양수 및 음수 부호를 유지하며 왼쪽 하단과 오른쪽 상단을 구별할 수 있습니다. 해당 매개변수 순서는 언어 문서에 따라 확인되어야 합니다.
이 프로젝트에서는 Math.atan2(y,x)를 사용합니다.
방향이 정확하고 각도 단위를 사용해야 합니다.
JavaScript 삼각 함수 입력은 라디안입니다. 죄에 직접적으로 212와 같은 도수를 주면 212라디안으로 착각하게 됩니다.
라디안 = 도 × π/180
특별한 상황을 극복하기 위해 잘못된 숫자에 의존하지 마십시오.
축 방향은 정의할 수 있지만 영 벡터는 정의할 수 없습니다. 음수의 반올림과 잘림도 다르며, 특히 달력 코드는 혼합될 수 없습니다.
atan2(0,0)에는 기하학적 방향이 없습니다. 바닥(−7.83)=−8
계산 과정 펼치기
θ弧경비 = atan2(y,x) θ경비 = θ弧경비 × 180/π θ圈内 = ((θ경비 mod 360)+360) mod 360
atan2는 y를 먼저 전달한 다음 x를 전달합니다. 사분면 정보를 유지합니다. x=y=0일 때 기하학적 방향은 없으며, 프로그램에서 값을 반환하더라도 방향으로 사용할 수 없습니다.
한번 시도해 보세요
먼저 원본 책의 왼쪽 하단에 있는 예제를 살펴본 다음 두 구성 요소를 모두 양수로 변경하세요. 경사 비율은 동일하지만 방향은 반 바퀴씩 달라야 합니다. 마지막으로 0 벡터를 시도해 보세요.
한번보세요 →
기호를 외울 필요가 없습니다
- atan(y/x)
- 비율만으로는 180° 떨어져 있는 방향을 구별하는 것이 불가능합니다.
- atan2(y,x)
- 두 개의 구성요소를 각각 유지하고 사분면을 판단합니다.
- θ / θπ/180
- 각도 값(도)/해당 라디안 값
- floor / trunc
- 음의 무한대로 반올림/0으로 잘림은 동일한 작업이 아닙니다.
알고리즘, 정확성 및 적용 범위
보충 1장 올바른 사분면 및 언어 단위 트랩. 원본 책 A=−0.5712, B=−0.9139를 사용하면 인터페이스 y=A, x=B; atan(A/B)는 약 32°이고 올바른 방향은 약 212°입니다. 단일 매개변수 atan은 x=0일 때 나누기 시연을 수행하지 않습니다. atan2는 여전히 축의 방향을 결정할 수 있지만 (0,0)에는 기하학적 방향이 없으며 JavaScript atan2(0,0)=0을 사용하여 답을 위조할 수 없습니다. 오른쪽 그림은 동일한 각도를 라디안으로 변환하고 실수로 Math.sin에 각도를 직접 제공한 후의 결과를 비교합니다. 또한 cos만 추론할 때 0~180°의 범위도 표시됩니다. 음수 바닥/절단 반올림은 7장과 일치합니다. 각도에 대한 이전 입문 과정에는 이미 도 분 초 빼기 기호, 각도 시간 및 원이 있었습니다. 여기서는 반복하지 않겠습니다. 수학 포털은 또한 원본 도서의 광각 정규화 테스트, Horner 다항식 및 수치 주기율표의 합산을 구현하며 검사는 직접 확장과 일치합니다. 최신 JavaScript 성능 보장에 대한 이전 모델 속도 테스트를 추론하지 않습니다. 안전한 분기 및 반복 상한의 구현은 일반 근 찾기 과정에서도 찾을 수 있습니다.
내 이해 확인
두 구성요소의 표시를 보존하기 위해 이 프로젝트에서 어떤 기능이 사용됩니까?
atan2(y,x) — atan2는 먼저 사분면 정보를 버리지 않고 각각 y와 x를 수신합니다.
θ를 각도로 표현하는 경우 Math.sin(θ)를 직접 사용할 수 있나요?
아니요, 라디안을 먼저 변경하세요. — JavaScript의 sin 입력은 라디안 단위입니다.
두 구성요소 모두 0입니다. 올바른 방향을 어떻게 보고해야 합니까?
정의가 없다 — 0 벡터에는 방향이 없습니다. 함수에서 반환된 숫자는 기하학적 정의를 대체할 수 없습니다.
방향 구성 요소와 기호를 먼저 유지한 다음 단위를 변환합니다. 프로그램에 의해 주어진 숫자는 그 숫자가 정확한 기하학적 의미를 가지고 있다는 것을 의미하지 않습니다.
Jean Meeus · Astronomical Algorithms, 2nd ed. · 아니요. 1 장