> 백엔드 개발 > C++ > 두 점과 수평축 사이의 각도를 계산하는 방법은 무엇입니까?

두 점과 수평축 사이의 각도를 계산하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-14 17:47:45
원래의
367명이 탐색했습니다.

How to Calculate the Angle Between Two Points and the Horizontal Axis?

직선과 가로축 사이의 각도 계산

직선과 수평축 사이의 각도를 결정하는 것은 다양한 프로그래밍 시나리오에서 일반적으로 필요합니다. 두 개의 점 (P1x,P1y) 및 (P2x,P2y)이 주어지면 목표는 이 각도를 계산하는 것입니다. .

먼저 끝점과 시작점 사이의 증분값(차이)을 결정해야 합니다.

<code>deltaY = P2_y - P1_y
deltaX = P2_x - P1_x</code>
로그인 후 복사

다음으로 아크탄젠트 함수(arctan)를 사용하여 각도를 계산하고 결과를 라디안에서 도로 변환할 수 있습니다.

<code>angleInDegrees = arctan(deltaY / deltaX) * 180 / PI</code>
로그인 후 복사

또는 프로그래밍 언어가 atan2 함수를 제공하는 경우 사분면 문제를 처리하는 것보다 먼저 atan2 함수를 사용하세요.

<code>angleInDegrees = atan2(deltaY, deltaX) * 180 / PI</code>
로그인 후 복사

특정 요구 사항에 따라 각도가 속하는 사분면을 고려하여 조정해야 할 수도 있습니다. deltaX 및 deltaY의 부호를 고려하여 적절한 사분면을 결정하고 그에 따라 각도를 조정할 수 있습니다.

Python 샘플 코드

다음 Python 코드는 위 메소드의 구현을 보여줍니다.

<code class="language-python">from math import *

def getAngleBetweenPoints(x_orig, y_orig, x_landmark, y_landmark):
    deltaY = y_landmark - y_orig
    deltaX = x_landmark - x_orig
    return degrees(atan2(deltaY, deltaX)) # 使用degrees函数直接转换为角度

angle = getAngleBetweenPoints(5, 2, 1, 4)
assert angle >= 0, "angle must be >= 0"
angle = getAngleBetweenPoints(1, 1, 2, 1)
assert angle == 0, "expecting angle to be 0"
angle = getAngleBetweenPoints(2, 1, 1, 1)
assert abs(180 - angle) < 1e-6, "expecting angle to be 180" # 使用更精确的断言
</code>
로그인 후 복사

이 코드에는 각도 계산의 정확성을 보장하기 위한 추가 검사가 포함되어 있습니다. degrees 함수를 사용하여 라디안을 각도로 직접 변환하여 코드를 단순화했습니다. 그리고 부동 소수점 비교에서 오류를 피하기 위해 마지막 주장을 더 정확하게 판단합니다.

위 내용은 두 점과 수평축 사이의 각도를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿