Vectorberechnung [gelöst]

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

EPS

Betreff: Vectorberechnung [gelöst]

BeitragMo, Sep 14, 2009 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen, ich bräuchte mal ein Mathematik- bzw. "Geometriegenie" - meine Schulzeit ist schon etwas länger her.

user posted image

Gegeben ist die Position A eines Objekts im Raum. Weiterhin Position B eines anderen Objekts im Raum. Gesucht ist die Position C im Raum. Wobei C auf der Geraden zwischen A und B liegen soll, aber einen bestimmten Wert vor B liegen soll (z.B. 3 Units).

Könnte mir BITTE jemand mal helfen wie man sowas berechnet? Ich hab zwar schon diverse Vektor Tutorials durchgeackert aber meine Versuche das Umzusetzen scheitern kläglich. Es muß kein Programmcode sein, ein theoretischer Ansatz (also Mathematischer) reicht völlig.

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

Man kann sich öfter als zweimal im Leben halb tot lachen.
  • Zuletzt bearbeitet von EPS am Mo, Sep 14, 2009 14:19, insgesamt einmal bearbeitet

NightPhoenix

BeitragMo, Sep 14, 2009 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst erst den Vektor zwischen A und B

Code: [AUSKLAPPEN]
vektor = (Xa-Xb / Ya-Yb / Za-Zb)

Die Trennstriche "/" sind keine Divisionen! Sie dienen der Trennung von x, y und z Koordinaten.

zusammengefasst also...

Code: [AUSKLAPPEN]
vektor = (Xv / Yv / Zv)

(Xv ist Xv=Xa-Xb falls du durcheinander kommst)

von diesem berechnest du die Länge mit...

Code: [AUSKLAPPEN]
länge = sqr(Xv²+Yv²+Zv²)


Nun weißt du welchen Abstand die Punkte A und B voneinander haben.
Jetzt kannst du deine gesuchten 3 Einheiten Abstand durch die ermittelte Länge rechnen...

Code: [AUSKLAPPEN]
faktor = 3 / länge


und kannst nun mit dem ermittelten Vektor den ich als "vektor" bezeichnet habe auf den Punkt B aufrechnen...

Wichtig ist hierbei, dass du die Richtung des Vektors beachtest. Er msus von B Richtung A zeigen...

C ist also...

Code: [AUSKLAPPEN]
C = Xb+Xv*faktor / Yb+Yv*faktor / Zb+Zv*faktor


So einfach Wink Sollte funktionieren hab das nicht durchgerechnet.

MfG.


~ kleiner edit ~
~ nochmal edit, da war ein Fehler drin ~
  • Zuletzt bearbeitet von NightPhoenix am Mo, Sep 14, 2009 14:03, insgesamt einmal bearbeitet

EPS

BeitragMo, Sep 14, 2009 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Das klingt zunächst mal einfach, allerdings gab es wohl ein kleines Missverständnis und eine Frage hätte ich dazu noch:

1. Der Faktor (das Misverständnis), ich möchte nicht 1/3 der Strecke, sondern einen Festen Längenwert abziehen, also z.b. 3. Mit Units meinte ich die Einteilung des Grids. - gut, aber das hinzubekommen sollte ja auch nicht schwer sein.

2. Das mit dem "zeigen" von Vektor B nach A ... wie kann man denn diesen "Richtungsvektor" (ist es das) berechnen?

Schon mal herzlichsten Dank
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

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

Der Eisvogel

BeitragMo, Sep 14, 2009 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe zwar nicht viel Ahnung davon, aber ich würde mir die Winkel des Vektor angucken und dann per Cos und Sin einfach die Koordinaten errechnen, so wie in 2D, bei zB: einer Analog-Uhr, bloß halt in 3D. Ich guck mal ob ich das selber hinbekomme.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

D2006

Administrator

BeitragMo, Sep 14, 2009 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
EPS hat Folgendes geschrieben:
1. Der Faktor (das Misverständnis), ich möchte nicht 1/3 der Strecke, sondern einen Festen Längenwert abziehen, also z.b. 3. Mit Units meinte ich die Einteilung des Grids. - gut, aber das hinzubekommen sollte ja auch nicht schwer sein.

Da ist kein Missverständniss, das hat er bedacht. Du musst die einzelnen Komponenten des Vektors durch die Länge des Vektors teilen, damit du einen Vektor der Länge 1 (bei dir 1 Unit) hast. Mit seinem Faktor fasst er nur zusammen, gleich die dreifache Länge zu nehmen, weil du die ja brauchst.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Xeres

Moderator

BeitragMo, Sep 14, 2009 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du Vektoren nicht unbedingt benutzen möchtest reicht Atan2 um den Winkel von A zu B fest zu stellen und mit cos * Units und sin* Units den Punkt C zu finden.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

NightPhoenix

BeitragMo, Sep 14, 2009 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 2.:
Zitat:
vektor = (Xa-Xb / Ya-Yb / Za-Zb)

Dies ist der Richtungsvektor.

Die Orientierung dessen kannst du über das mulitplizieren des gesamten Vektors mit *(-1) ändern (also ob er Vorwärts oder Rückwärts verläuft)

Du brauchst lediglich das wie ich es hingeschrieben habe in Blitz portieren und es funktioniert. Du solltest also die Koordinaten die ich in "( / / / )" geschrieben habe in die x, y, z Koordinaten teilen und einzeln verrechnen, aber sonst sollte man alles so übernehmen können.

EPS

BeitragMo, Sep 14, 2009 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@2006 - danke für die Aufklärung, ich sag ja ... lange her die Schule.

@Xeres - es geht nicht so sehr um das wollen als mehr um das was gegeben ist und benötigt wird, aber danke für den Vorschlag.

@NightPhonix - danke, ich werd mich mal ran machen, das sollten genügend Informationen sein.

Vielen Dank euch allen für die Nachhilfe Wink
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

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

Xeres

Moderator

BeitragMo, Sep 14, 2009 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du es noch irgendwo gebraucht auftreiben kannst, empfehle ich dir "Das große Buch der Mathematik"(bsp. Amazon) - Da steht alles an Mathe drin, was man jemals gebrauchen kann.
Viel Erfolg.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

EPS

BeitragMo, Sep 14, 2009 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Tipp. Vielerlei Tutorials findet man ja auch im Netz, das Problem ist es gut beschrieben zu bekommen und dann auch noch auf Anwendbare Beispiele bezogen - nicht nur reine Mathematik oder Geometrie.

So ist eine von mir gestellte Frage und die hier vermittelte Antwort für mich besser nachzuvollziehen als irgend welche Formeln.

NightPhoenix hat es super gut erklärt so das ich es nachvollziehen kann und BTW - das wofür ich es brauchte funktioniert auf Anhieb.

Also danke nochmals an alle.
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