Hi,
ich habe ein kleines Problem bezüglich vektor Rechnung.
Ich habe einen Vektor, mit einer x1 und einer x2 Komponente.
Jetzt hat dieser Vektor natürlich eine Länge, die ich so berechne:
Delphi-Quellcode:
function TVektor.GibLaenge: Double;
begin
result:=sqrt(sqr(x1)+sqr(x2));
end;
Ganz simpler Pythagoras, bisher noch kein Problem.
Jetzt möchte ich aber die Länge des Vektors verändern. Dazu habe ich den folgenden Ansatz gewählt: Vektor normieren (Lände 1), und mit der neuen Länge multiplizieren:
Delphi-Quellcode:
procedure TVektor.setzeLaenge(laenge:double);
begin
x1:= (x1/giblaenge) * laenge;
x2:= (x2/giblaenge) * laenge;
end;
Generell funktioniert das auch. Nur leider nicht genau genug. Ich hab folgendes Experiment gemacht:
Delphi-Quellcode:
var temp:TVektor;
begin
temp:=Tvektor.create(4,4);
temp.setzelaenge(5);
Showmessage(floattostr(temp.giblaenge));
end;
Das Ergebnis: DIe SHowmessage gibt 5,11123 usw. aus. Die Zahlen mit denen er rechnet sind also ungenau. Dadurch haut mein gesamtes Programm nicht hin. Ich habe auch schon den Typ auf Extended gewechselt.. keine Verbesserung.
Daher suche ich jetzt einen anderen Ansatz, die Länge eines Vektors festzulegen. Kann mir da jemand helfen?
Danke im vorraus