Distanz zweier Vektoren berechnen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

EPS

Betreff: Distanz zweier Vektoren berechnen

BeitragMi, Aug 12, 2009 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal ne Frage an die Mathe Profis hier - ich bin eindeutig keiner.

Gegeben sind 2 Vektoren im Raum A(x,y,z) und B(x,y,z). Die Distanz zwischen beiden zu berechnen habe ich so gelöst:

Code: [AUSKLAPPEN]
Dist = SQR( ( ( A.x - B.x ) ^ 2 ) + ( ( A.y - B.y ) ^ 2 ) + ( ( A.z - B.z ) ^ 2 ) )


zunächst hoffe ich mal das ist richtig Wink

Nun zum eigentlichen Problem. Ich muß nicht nur die Distanz wissen, sondern auch ob A gegenüber B nun positiv oder negativ ist. Sprich ob die Bewegung im Raum nun ins Minus oder ins Plus geht - ich hoffe ihr kapiert was ich meine.

Wie macht man das?
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

TimBo

BeitragMi, Aug 12, 2009 15:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

die Lösung mit der 3 Dimensionaler Strecke, ist schon richtig
Zitat:
Ich muß nicht nur die Distanz wissen, sondern auch ob A gegenüber B nun positiv oder negativ ist.


In relation zu was höä ? ^^

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

EPS

BeitragMi, Aug 12, 2009 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, die Relation ist immer Punkt A zu Punkt B...schwer zu erklären. Ich versuch es mal mit dem Zweck für den das ganze dienen soll.

Ich schreibe gerade ein PlugIn für das 3D Programm trueSpace. Das PlugIn soll die Drehung eines Rades anhand der zurückgelegten Strecke und des Raddurchmessers berechnen.

Das Rad wird also von Frame zu Frame im Raum bewegt.

Beispiel: Ich weis die Position des Rades bei Frame 0 und bei Frame 1. Nun muß ich die Drehung des Rades berechnen. Wenn sich das Rad auf einer Linie bewegen würde wäre das ganze einfach A.x - B.x und ich hätte sowohl die Distanz als auch die Richtung in die das Rad bewegt wurde (positiv oder negativ halt) und könnte entsprechend den Winkel berechnen (ebenfalls positiv oder negativ, je nach Drehrichtung).

Nun kann so ein Rad aber auch um Kurven rollen oder sogar eine Steigung nach oben - daher 3 Dimensionale Punkte. Die Distanz ist wie gesagt nicht das Problem, aber die Drehrichtung sehr wohl und dafür muß ich eben wissen ob Punkt A gegenüber Punkt B "positiver" oder "negativer" ist.

Ich hoffe das Beispiel erklärt es verständlicher.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

TimBo

BeitragMi, Aug 12, 2009 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Speicher doch für jedes Objekt ein Type an.

Dann speicherste da die Distanz rein, wenn die Distanz größer als im Frame davor ist, dann positiv ansonsten negativ.
Dann überschreibst du das Frame wieder. Dabei muss allerdings ein Punkt konstant sein.

Edit// das hört sich zu einfach an ^^

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

EPS

BeitragMi, Aug 12, 2009 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso sollte die Richtung anders sein nur weil die Distanz anders ist? Wenn du nen Schritt mit 1,2m machst und dann einen mit 1,3m - gehst du dann plötzlich rückwärts?
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

TimBo

BeitragMi, Aug 12, 2009 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
achsoo jetz check ich das .

berechne doch mit Sin Cos den Punkt wo er in frame 1 hingehen wollte

A. ---- > C ......B.

B ist also nur ein möglicher Zielpunkt
wenn Frame 2 jetz so aussieht

C <----- A ........B

dann könntest du schauen ob sich jetzt der Punkt C weiter von Punkt b enterfernt hält als in Frame 1.

A B und C liegen demnach alle auf einer Strecke.
Ich kann das ned erklären

Grüße
TImBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

EPS

BeitragMi, Aug 12, 2009 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine Hilfe Versuche sind wirklich nett gemeint - aber ich versteh es erst recht nicht Wink
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

TimBo

BeitragMi, Aug 12, 2009 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
omg ich wusste ich kann nicht gut beschreiben wie der ansatz von mir lautet.

Komm doch in den Chat ? ^^

Dann geht sowas recht schnell über die bühne ^^

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Noobody

BeitragMi, Aug 12, 2009 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Um herauszufinden, ob der eine Vektor 'negativ' zum anderen gesehen liegt, brauchst du neben den beiden Punkten noch eine zusätzliche Information, nämlich den Vektor, der vom Rad aus gesehen nach vorne zeigt.

Wenn du diesen Vektor hast, ist es relativ einfach. Du brauchst dann nur noch das Skalarprodukt aus Fahrrichtung und 'Vornevektor' zu bilden und zu schauen, ob das Ergebnis grösser oder kleiner als Null ist.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

TimBo

BeitragMi, Aug 12, 2009 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ich das richtig verstanden habe, dann erinnert das mich ein meinen ansatz Very Happy

omg so hätte ich das ned beschreiben können ^^

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

EPS

BeitragMi, Aug 12, 2009 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Einen Vektor für "vorne"kann ich sicherlich herausfinden. Skalarprodukt ist aber schon wieder ein "böhmisches Dorf" für mich. Gibts dafür ne Formel (Quellcode) so das auch ich es kapiere?

Danke schonmal
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group