Zitat von
Khabarakh:
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
hmm jo das alpha zu verändern ist in der Tat überflüssig. Das mit dem Arctan2 gucke ich mir mal an, aber die bisherige Funktion liefert ja grundsätzlich auch das richtige, nur eben ungenau und das ist es was ich nicht verstehe...
edit: ok arctan2 ist eingebunden. meine gibwinkel prozedur sieht jetzt also so aus:
Delphi-Quellcode:
function TVektor.Gibwinkel2;
begin
result:=radtodeg(arctan2(x2,x1));
end;
schonmal sehr viel einfacher danke
die setzewinkel haut jedoch immer noch nicht hin, aus 20 wird damit beispielsweise 23,xx