Seite 1 von 1

Polarkoordinaten

Verfasst: 21.11.2008 00:18
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