Wenn du innerhalb einer Prozedur Felder des Objektes veränderst, darfst du natürlich nicht erwarten, dass Funktionen immer noch den gleichen Wert zurückgeben.
if alpha <= 0 then alpha:=360+alpha;
Überflüssig
Delphi-Quellcode:
if x2 >= 0 then result:=radtodeg(arccos(x1/giblaenge))
else result:=360-radtodeg(arccos(x1/giblaenge))
ArcTan2