시계 방향 각도 직접 계산
두 벡터 사이의 시계 방향 각도 계산은 종종 내부 각도(0)를 결정하는 내적을 사용하여 처리됩니다. -180도). 그러나 직접적인 방법을 선호하는 경우 고려해야 할 단계는 다음과 같습니다.
2D 사례
내적이 각도의 코사인을 측정하는 것처럼 행렬식도 각도의 사인을 제공합니다. 시계 방향 각도는 다음과 같이 계산할 수 있습니다.
dot = x1*x2 + y1*y2 # Dot product between [x1, y1] and [x2, y2] det = x1*y2 - y1*x2 # Determinant angle = atan2(det, dot) # atan2(y, x) or atan2(sin, cos)
각도의 방향은 시계 방향 각도를 나타내는 양수 기호와 함께 좌표계와 일치합니다. 입력을 교환하면 방향이 변경되고 따라서 부호도 변경됩니다.
3D 사례
3D 벡터의 경우 두 벡터는 두 벡터에 수직인 회전 축을 정의합니다. 이 축에는 고정된 방향이 없으므로 회전 각도를 고유하게 결정할 수 없습니다. 일반적인 관례에는 양의 각도를 생성하도록 축 방향을 지정하는 것이 포함됩니다. 이 시나리오에서는 정규화된 벡터의 내적이면 충분합니다.
dot = x1*x2 + y1*y2 + z1*z2 # Between [x1, y1, z1] and [x2, y2, z2] lenSq1 = x1*x1 + y1*y1 + z1*z1 lenSq2 = x2*x2 + y2*y2 + z2*z2 angle = acos(dot/sqrt(lenSq1 * lenSq2))
3D 평면
벡터가 알려진 법선 벡터가 있는 평면 내에 있는 경우 n, 회전축은 n을 따라 위치합니다. n을 통합하면서 2D 계산을 적용하면 시계 방향 각도가 제공됩니다.
dot = x1*x2 + y1*y2 + z1*z2 det = x1*y2*zn + x2*yn*z1 + xn*y1*z2 - z1*y2*xn - z2*yn*x1 - zn*y1*x2 angle = atan2(det, dot)
이 계산에 대해 n이 정규화되었는지 확인하세요.
0-360도 범위
다양함 atan2 구현은 [-180°, 180°] 범위의 반환 각도를 반환합니다. [0°, 360°] 범위의 양수 각도를 얻으려면 음수 결과에 2π를 추가하세요.
위 내용은 두 벡터 사이의 시계 방향 각도를 어떻게 직접 계산합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!