Polarkoordinaten

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Polarkoordinaten

Beitrag von KeyKon »

Falls jemand auch für einige Programme auf Polarkoordinaten zurückgreifen muss sind die Funktionen sicher ganz praktisch (vor allem die bivariate Arkustangens-Funktion ATan2(y,x)...)

Code: Alles auswählen

Procedure.d ATan2(y.d,x.d)
  If x < 0
    ProcedureReturn ATan(y/x)+#PI
  ElseIf x > 0 And y >= 0
    ProcedureReturn ATan(y/x)
  ElseIf x > 0 And y < 0
    ProcedureReturn ATan(y/x)+2*#PI
  ElseIf x = 0 And y > 0
    ProcedureReturn #PI/2
  ElseIf x = 0 And y < 0
    ProcedureReturn 3*#PI/2
  Else ; x = 0 and y = 0
    ProcedureReturn 0
  EndIf
EndProcedure
Procedure.d Rad(x.d,y.d)
  ProcedureReturn Sqr(Pow(x,2)+Pow(y,2))
EndProcedure
Procedure.d KartX(ang.d,rad.d)
  ProcedureReturn Cos(ang)*rad
EndProcedure
Procedure.d KartY(ang.d,rad.d)
  ProcedureReturn Sin(ang)*rad
EndProcedure

x = -6
y = 4


;In Polarform umrechnen
radius.d = Rad(x,y)
angle.d = ATan2(y,x)

Debug radius
Debug angle
Debug angle*180/#PI
Debug "---"


;In Kartesische Koordinaten zurückrechnen
x = KartX(angle,radius)
y = KartY(angle,radius)

Debug x
Debug y
(\/) (°,,,°) (\/)