Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Länge eines Vektors verändern (https://www.delphipraxis.net/76329-laenge-eines-vektors-veraendern.html)

Antigo 2. Sep 2006 15:01


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:
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 :)

Khabarakh 2. Sep 2006 15:04

Re: Länge eines Vektors verändern
 
Delphi-Quellcode:
procedure TVektor.setzeLaenge(laenge:double);
begin
  x1:= (x1/giblaenge) * laenge;
  x2:= (x2/giblaenge) * laenge;
end;
So wird das nix ;) . Du musst den Vektor-Betrag in einer Variable speichern, bevor die einzelnen Komponenten zugewiesen werden.

Antigo 2. Sep 2006 15:10

Re: Länge eines Vektors verändern
 
oh mein gott.



=> :wall: <=


danke :)

3_of_8 2. Sep 2006 15:16

Re: Länge eines Vektors verändern
 
Es würde auch reichen, wenn er die alte Länge in ner Variable speichert.

dino 2. Sep 2006 15:59

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?

Khabarakh 2. Sep 2006 16:21

Re: Länge eines Vektors verändern
 
Zitat:

Zitat von Khabarakh
Du musst den Vektor-Betrag in einer Variable speichern

Zitat:

Zitat von 3_of_8
Es würde auch reichen, wenn er die alte Länge in ner Variable speichert.

Ähm... ja.

3_of_8 2. Sep 2006 16:37

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.

dino 2. Sep 2006 16:40

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