두 점을 감안할 A
와 B
라인에서 각도를 찾아 AO
라인에 BO
포인트에 대한 기원을 ( ). 또한, 포인트의 위치에 따라 각도가 양수 또는 음수 일 수 있습니다 (예 참조). 입력은 점이 되며 편리한 형태로 제공 될 수 있습니다. 출력은 각도로 표시됩니다 (그러나 원점을 기준으로 시계 반대 방향으로 회전 하면 양수이고 시계 방향으로 회전하면 음수). 각도가 180도이면 음수 또는 양수 출력을 반환 할 수 있습니다. 마찬가지로 각도는 동일한 각도의 양수 또는 음수 버전 일 수 있습니다 ( 와 같음 ). 예 :O
O
(0,0)
A
B
AO
BO
90 deg
-270 deg
-
입력 :
A(5,5) B(5,-5)
출력 :-90
(AO
회전-90
각도로 회전 합니다BO
). -
입력 :
A(5,-5) B(5,5)
출력 :90
(AO
회전90
각도로 회전 합니다BO
).
이것은 code-golf 이므로 바이트 단위의 가장 짧은 코드가 이깁니다!
답변
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.