2010-05-28 5 views
2

두 개의 2D 벡터, 예를 들어 u와 v가 직교 좌표로 정의됩니다.벡터의 회전을 찾는 가장 빠른 방법

벡터는 시계의 바늘이라고 상상해보십시오. 내가 찾는 가장 빠른 방법은, 파이썬을 사용하여, v가 후 또는 u 전에 (또는 다른 말로하면 반 비행기가 v의 위치, U의 위치에 관한) 알아보십시오. 벡터가 정렬되어 있다면 문제의 목적을 위해 답은 전에 있어야합니다.

일부 삼각법을 사용하면 쉽게 보이지만 좌표 만 사용하는 것이 더 빠를 것이라고 믿습니다.

내 테스트 케이스 :

def after(u, v): 
    """code here""" 
  • 후 ((4,2), (6, 1)) : 참
  • 후 ((4,2), (3,3)) : FALSE
  • 후 ((4,2), (2,1)) : FALSE
  • 후 ((4,2), (3, -3)) : 참
  • 후 ((4,2), (-2, -5)) : True
  • ((4,2), (-4, -2)) : 거짓

답변

13
def after(u, v): 
    # return sign of cross product 
    return u[0]*v[1]<u[1]*v[0] 
가 빨리 경우

는 모르겠지만,이 간결하다

+0

감사합니다. 그것은 내가 찾고 있었던 바로 그 것이다. – kriss

0

일반 아이디어 : V 일치와 y는 U 좌표 새로운인지 확인하기 위해 x 축 회전 양.

+0

이 링크를 사용하여 회전에 대한 수학을 계산하면 http://en.wikipedia.org/wiki/Rotation_(mathematics)#Matrix_algebra에서 Pete가 제안한 방법을 복구 할 수 있습니다. – vad

0

그래서 벡터 v의 머리에있는 점을 벡터 u로 나타내는 선의 어떤면을 알고 싶습니까? 알고리즘 (algorithm)에 대해 구글 (query : point on side of line)을 쳤다. 1 톤을 발견, this one (두 번째 게시물을 읽으십시오) 삼각법없이 않습니다.

0

회전으로 이동하는 경우 간단한 삼각법을 사용하여 회전을 파악할 수 있습니다.

고등학교 3 학년 수업의 세 가지 규칙을 기억하나요? "SOH CAH TOA"벨소리가 울려? 이것은 그 의미이다 우측 삼각형 주어

:

A * 
    | \ 
    | \ 
    | \ 
B *----* C 

SOH :

ΔABC 의해 형성된 각도의 사인의 길이에 의해 분할 된 양측의 길이와 같다 빗변의

   __ 
      AB 
SIN(∠BCA) = ---- 
      __ 
      AC 

CAH : 예를 들어, 순서 점 C에 형성된 각도를 찾는

ΔABC 의해 형성된 각도의 코사인은 인접하는 변의 길이 (안 같다 빗변 (hypotenuse)을 빗변의 길이로 나눈 것.따라서, 예를 들어, 점 C에 형성된 각도를 찾으려면

   __ 
      BC 
COS(∠BCA) = ---- 
      __ 
      AC 

TOA :

ΔABC 의해 형성된 각도의 탄젠트는 나눈 대향 변의 길이와 같 인접한면의 길이 (빗변이 아님). 따라서, 예를 들어, 점 C에서 형성되는 각도 찾을 :이 측정 중 하나를 확인할 수있는 경우

   __ 
      AB 
TAN(∠BCA) = ---- 
      __ 
      BC 

그래서, 당신은 나머지를 확인할 수 있습니다, 당신은에 의해 형성되는 직각 삼각형을 생각 제공 좌표와 축.

관련 문제