从坐标到学位

时间:2011-11-19 21:42:21

标签: wolfram-mathematica coordinates

如何从笛卡尔坐标获得0度到360度的角度,以便:

{1,0}  = 0   Degree
{0,1}  = 90  Degrees
{-1,0} = 180 Degrees
{0,-1} = 270 Degrees

我在使用ArcTan时遇到困难,让角度下注180到359 ......

3 个答案:

答案 0 :(得分:3)

尝试:

f[x_List] := Mod[ArcTan @@ x /Pi 180 Degree, 360 Degree]

f /@ {{0, -1}, {0, 1}, {1, 0}, {-1, 0}}
(*
 -> {270 \[Degree], 90 \[Degree], 0, 180 \[Degree]}
*)

修改

由于前一种形式受到批评,这是另一种方法。根据我的口味不太容易理解:

f = (180 /Pi ArcTan @@ #)~Mod~360 &

答案 1 :(得分:3)

试试这个:

CoordinateToDegree[x_?NumberQ, y_?NumberQ] := 
 Rescale[ArcTan[-x, y], {-Pi, Pi}, {360, 0}]

使用ArcTan[-x,y],您将在分支切割上对齐,以便获得角度的连续函数。然后Rescale将范围-Pi...Pi映射到0...360

这是简单的Manipulate,它演示了这个解决方案:

Manipulate[
 Graphics[{
  Orange, Disk[],
  Black, Text[Style[CoordinateToDegree[Cos[t], Sin[t]], "Title"], {Cos[t], Sin[t]}]},
 PlotRange -> 1.4], {t, 0, 2 \[Pi]}]

enter image description here

答案 2 :(得分:2)

我认为这很有效,尽管很难看:

todeg[x_, y_] := If[# < 0, 360 + #, #] &@(N@ArcTan[x, y]/Degree)