![]() |
Länge eines Vektors verändern
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:
Ganz simpler Pythagoras, bisher noch kein Problem.
function TVektor.GibLaenge: Double;
begin result:=sqrt(sqr(x1)+sqr(x2)); end; 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:
Generell funktioniert das auch. Nur leider nicht genau genug. Ich hab folgendes Experiment gemacht:
procedure TVektor.setzeLaenge(laenge:double);
begin x1:= (x1/giblaenge) * laenge; x2:= (x2/giblaenge) * laenge; end;
Delphi-Quellcode:
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.
var temp:TVektor;
begin temp:=Tvektor.create(4,4); temp.setzelaenge(5); Showmessage(floattostr(temp.giblaenge)); end; Daher suche ich jetzt einen anderen Ansatz, die Länge eines Vektors festzulegen. Kann mir da jemand helfen? Danke im vorraus :) |
Re: Länge eines Vektors verändern
Delphi-Quellcode:
So wird das nix ;) . Du musst den Vektor-Betrag in einer Variable speichern, bevor die einzelnen Komponenten zugewiesen werden.
procedure TVektor.setzeLaenge(laenge:double);
begin x1:= (x1/giblaenge) * laenge; x2:= (x2/giblaenge) * laenge; end; |
Re: Länge eines Vektors verändern
oh mein gott.
=> :wall: <= danke :) |
Re: Länge eines Vektors verändern
Es würde auch reichen, wenn er die alte Länge in ner Variable speichert.
|
Re: Länge eines Vektors verändern
...sonst kriegste nen anderen Vektor raus :)
also: neuelänge:=5 länge:=sqrt(sqr(x1)+sqr(x2)) x1:=x1*neuelänge/länge x2:=x2*neuelänge/länge neuelänge:=sqrt(sqr(x1)+sqr(x2)) kriegste am Ende auch 5 raus? |
Re: Länge eines Vektors verändern
Zitat:
Zitat:
|
Re: Länge eines Vektors verändern
ARGH, ich hab mich verlesen.
Ich dachte du meinst die einzelnen Vektor-(ich weiß ned wie die Dinger heißen, ich rate einfach mal) Elemente. |
Re: Länge eines Vektors verändern
du meinst
x1*:=x1 x2*:=x2 x1:=x1*neuelänge/länge* x2:=x2*neuelänge/länge* ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz