2014-09-26 5 views
-1

나는 쉬운 일이 될 소리를 계산하기 위해 적절한 수식을 찾으려고 노력하고 있지만 실제로는 큰 수학적 두통입니다.벡터에서 좌표까지의 각도를 계산하십시오.

내가 발견 할 그것이 COORD (X, Y)

enter image description here 얼굴을 내 벡터의 각도 (X, Y, 각도)을 설정해야하는 오프셋 (offset)

내 벡터는 항상되지 않습니다 360도를 마주보고 있으므로 변하기 쉽습니다. 내 PC 화면을 깨기 전에 답을 기다리고 있습니다. 감사합니다.

+1

이 질문이 수학에 대해 때문에 오프 주제로 나타납니다 ... 당신의 죄, COS, ATAN 의존성에 따라 (지정하지 않은) 좌표계

  • 사용 라디안 또는 학위를 TCH. – geoffspear

  • 답변

    2

    입력

    • p1 = (x1,y1) POINT1 (벡터 원점)
    • a1 = 360 deg 벡터의 방향
    • 가 coodinate 시스템을 가정
    • p2 = (x2,y2) POINT2이다 : X +이고 오른쪽 Y +는 CCW
    • 리안 +되는 최대 인 당신의 이미지는 당신이 X, Y가 혼합되어 있음을 암시합니다 (각도는 보통 Y가 아닌 X 축에서 시작 함)
    • 단지 피연산자의 순서가 있는지 확인 일부 libs가에 ATAN2라고

      • da=a1-a2=a1-atanxy(x2-x1,y1-y1)
      • atanxy (DX, DY) : A1의
      • da=? 변화는 p2-p1

      솔루션의 1을 방향에 맞게 올바른

    • 당신은 또한 내 atanxy in C++
    • 는 4 사분면 arctangens
    • ,369입니다 사용할 수 있습니다 1,363,210

    용액 2 :

    • v1=(cos(a1),sin(a1))
    • v2=(x2-x1,y2-y1)
    • da=acos(dot(v1,v2)/(|v1|*|v2|))

    또는 같은 약간 다른

    • ,863,627,846

      da=acos((cos(a1)*(x2-x1)+sin(a1)*(y2-y1)/sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))); 
      

      [참고]

      • 단지 변경 : 9,293,210
      • v2=(x2-x1,y2-y1)
      • v2/=|v2| //이 V2의 단위 벡터를 만드는, V1 이미 유닛
      • 그래서
      • da=acos(dot(v1,v2))

      인 그것은 엄마에게

    0

    벡터 간의 차이점은 또한 벡터입니다.

    그런 다음 tangens (y 부분/x 부분)를 계산하고 각도로 반전하십시오. Y의 부호를 사용 물론

    경우 X = 0

    0

    대향하는 COORD 인 경우 (X2, Y2)

    deltaY에 = Y2 - Y1

    위한 deltaX = X2 - X1

    넌 ... 공식을 사용하여 두 점 사이의 각도 각도가

    angleInDegrees = 아크 탄젠트 (deltaY에 /위한 deltaX) * 180/PI

    은 벡터의 원래 각도를 뺀 것이므로 올바른 오프셋을 얻을 수 있습니다!

    +0

    모든 4 사분면에서 작동하지 않습니다. – Spektre

    관련 문제