3 votes

De la coordonnée au degré

Comment puis-je obtenir l'angle en degrés de 0 à 360 à partir de coordonnées cartésiennes telles que :

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

J'ai du mal avec ArcTan à obtenir l'angle entre 180 et 359...

3voto

belisarius Points 45827

Essayez :

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]}
*)

Modifier

Comme la forme précédente a été critiquée, voici une autre façon de faire la même chose. Pas si facile à suivre à mon goût :

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

3voto

Arnoud Buzing Points 7413

Essayez ça :

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

Utilisation de ArcTan[-x,y] vous allez vous aligner sur la coupe de la branche afin d'obtenir une fonction continue pour l'angle. Puis Rescale cartographie la gamme -Pi...Pi a 0...360 .

Voilà qui est simple Manipulate qui démontre cette solution :

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

2voto

acl Points 5479

Je pense que ça marche, même si c'est moche :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X