AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Länge eines Vektors verändern

Ein Thema von Antigo · begonnen am 2. Sep 2006 · letzter Beitrag vom 2. Sep 2006
Antwort Antwort
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

Länge eines Vektors verändern

  Alt 2. Sep 2006, 15:01
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
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Länge eines Vektors verändern

  Alt 2. Sep 2006, 15:04
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.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#3

Re: Länge eines Vektors verändern

  Alt 2. Sep 2006, 15:10
oh mein gott.



=> <=


danke
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Länge eines Vektors verändern

  Alt 2. Sep 2006, 15:16
Es würde auch reichen, wenn er die alte Länge in ner Variable speichert.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#5

Re: Länge eines Vektors verändern

  Alt 2. Sep 2006, 15:59
...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?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Länge eines Vektors verändern

  Alt 2. Sep 2006, 16:21
Zitat von Khabarakh:
Du musst den Vektor-Betrag in einer Variable speichern
Zitat von 3_of_8:
Es würde auch reichen, wenn er die alte Länge in ner Variable speichert.
Ähm... ja.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Länge eines Vektors verändern

  Alt 2. Sep 2006, 16:37
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#8

Re: Länge eines Vektors verändern

  Alt 2. Sep 2006, 16:40
du meinst

x1*:=x1
x2*:=x2

x1:=x1*neuelänge/länge*
x2:=x2*neuelänge/länge*

?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz