두 점 사이의 각도를 찾으십시오 (그러나 원점을 기준으로 시계 반대

두 점을 감안할 AB라인에서 각도를 찾아 AO라인에 BO포인트에 대한 기원을 ( ). 또한, 포인트의 위치에 따라 각도가 양수 또는 음수 일 수 있습니다 (예 참조). 입력은 점이 되며 편리한 형태로 제공 될 수 있습니다. 출력은 각도로 표시됩니다 (그러나 원점을 기준으로 시계 반대 방향으로 회전 하면 양수이고 시계 방향으로 회전하면 음수). 각도가 180도이면 음수 또는 양수 출력을 반환 할 수 있습니다. 마찬가지로 각도는 동일한 각도의 양수 또는 음수 버전 일 수 있습니다 ( 와 같음 ). 예 :OO(0,0)ABAOBO90 deg-270 deg

  • 입력 : A(5,5) B(5,-5)출력 : -90( AO회전 -90각도로 회전 합니다 BO).

  • 입력 : A(5,-5) B(5,5)출력 : 90( AO회전 90각도로 회전 합니다 BO).

이것은 이므로 바이트 단위의 가장 짧은 코드가 이깁니다!



답변

Pyth, 11 바이트

.t-FPM.jMQ6

데모

입력은 다음 형식으로 제공됩니다.

[[Bx, By], [Ax, Ay]]

A가 먼저 오는 것이 바람직한 경우 1 바이트 단위로 변경할 수 있습니다.

설명:

.t-FPM.jMQ6
               Implicit: Q = eval(input())
      .jMQ     Convert input pairs to complex numbers.
    PM         Take their phases (angles in the complex plane).
  -F           Take the difference.
.t        6    Convert to degrees


답변

TI-BASIC, 13 바이트

TI-83 + / 84 + 시리즈 계산기 용.

Degree
Input Y
min(ΔList(R►Pθ(Ans,∟Y

이 프로그램을 사용하려면 {x1,x2}Ans 변수를 통해 {y1,y2}프롬프트에서 목록 을 입력하십시오 .


답변

CJam, 14 바이트

q~::ma:-P/180*

[[Ax Ay] [Bx By]]STDIN 에서 입력을 읽는 전체 프로그램입니다 .

CJam 통역사 에서 온라인으로 사용해보십시오 .

작동 원리

q~             e# Read and evaluate all input.
  ::ma         e# Replace each point (x, y) with atan2(x, y).
               e# This returns its angle with the positive y axis, measured clockwise.
      :-       e# Compute the difference of the two resulting angles.
               e# This returns the angle between the points, measured counter-clockwise.
        P/180* e# Divide by Pi and multiply by 180 to convert to degrees.


답변

Minkolang 0.9 , 112 바이트

나는 실제로 내장 함수로 삼각 함수를 구현하고 싶지만 이것은 재미있었습니다! (주의 : 이것은 부호있는 각도 차이가 아닌 양의 각도 차이를 출력합니다. 내 한계를 감안할 때, 그것이 정당하다고 생각합니다.)

4[n]0c2c*1c3c*+r4[2;1R]r+1R+0g*12$:;$:8[0ci2*3+d1R;0g$:1i1+[i2*1+d1+$:*]*]$+'3.141592654'25*9;$:$:12$:r-66*5**N.

여기에서 시도하십시오.

설명

누군가가 원한다면 더 자세한 설명을 게시 할 것이지만 요점은 다음과 같습니다.

4[n]                                    Take in 4 integers from input
0c2c*1c3c*+                             dot product
r4[2;1R]r+1R+0g*12$:;                   magnitudes of vectors
$:                                      dot product divided by magnitudes (z)
8[0ci2*3+d1R;0g$:1i1+             *]    Taylor series for arccos
                     [i2*1+d1+$:*]      In particular, the coefficient (1/2 * 3/4 * ...)
$+                                      Add them all up!
'3.141592654'25*9;$:$:                  Divide by pi for converting to degrees
12$:r-                                  Subtract from 1/2 - I now have arccos(z)
66*5**                                  Convert to degrees
N.                                      Output as number and stop.


답변

매스 매 티카, 22 바이트

{-1,1.}.ArcTan@@@#/°&

예:

In[1]:= {-1,1.}.ArcTan@@@#/°&[{{5,5},{5,-5}}]

Out[1]= -90.

In[2]:= {-1,1.}.ArcTan@@@#/°&[{{5,-5},{5,5}}]

Out[2]= 90.


답변

자바 스크립트, 66 바이트

let f=(a,b)=>(Math.atan2(b.y,b.x)-Math.atan2(a.y,a.x))*180/Math.PI;

데모


답변

줄리아, 18 25 바이트

f(A,B)=angle(B/A)/pi*180

이것은 “모든 편리한 형식”이 이미 복소수로 허용 A되고 B부여 될 수 있다고 가정합니다 . 그런 다음 복소수 산술 은 모든 무거운 리프팅을 수행합니다.

편집 : 스 니펫을 기능으로 변환했습니다. 18 바이트 버전은 Julia REPL에서만 작동합니다.