![]() |
Vektorberechnungen
Hey ho!
Ich habe mal eine Frage zu Vektoren. Und zwar möchte ich gerade eine eigene Vektorbibliothek schreiben (egal ob es schon eine gibt, ist nur zum testen ob ich das kann...ihr wisst schon: Lerneffekt und so :roll: ) Ich habe schon einfache Umrechnungen geschrieben, was ja auch nicht so schwer war, nur jetzt hänge ich gerade an den wirklich sinnvollen Sachen. Diese wären: - Schnittpunkt zweier Geraden - Abstand zweier Geraden - Schnittpunkt einer Gerade und einer Ebene - Schnittgerade zwischen 2 Ebenen - Normalenvektor einer Ebene (schon gelöst) Mit einem Blatt Papier theoretisch kein Problem, aber wie kriege ich einen Computer dazu, ein Gleichungssystem zu lösen? :shock: Oder gibt es schon eine fertige Bibliothek wo ich mir die Lösung dort mal anschauen könnte? Flare |
Re: Vektorberechnungen
Ein LGS löst du am besten, indem du das ganze in ne Matrix packst und sie dann in Stufenform bringst.
|
Re: Vektorberechnungen
Zitat:
Dann muss ich mich eben noch hinsetzen und eine Funktion zum Lösen von Linearen Gleichungssystem schreiben... Flare |
Re: Vektorberechnungen
Lineare Glichungssysteme kann man mit Determinanten lösen. Stichwörter: Cramersche Regel und Regel des Sarrus.
|
Re: Vektorberechnungen
Zitat:
Ich habe mir trotzdem nicht die Arbeit gemacht und eine Funktion selber entworfen, sondern ich habe mich ![]() Flare |
Re: Vektorberechnungen
Der Normalenvektor einer Ebene ist das Kreuzprodukt (Vektorprodukt V x V= V) aus beiden Richtungsvektoren der Ebene
|
Re: Vektorberechnungen
Zumindest im Zwei- und Dreidimensionalen lassen sich die Gleichungen ja wohl noch sehr simpel allgemein auflösen, wozu dafür bitte einen LGS-Löser? Und gerade die letzte Aufgabe dürfte wohl in keiner Dimension ein großes Problem sein ;) .
|
Re: Vektorberechnungen
Zitat:
Zitat:
Flare |
Re: Vektorberechnungen
Zitat:
Zitat:
|
Re: Vektorberechnungen
Zitat:
Flare |
Re: Vektorberechnungen
Was meinst du in diesem Zusammenhang mit Zahlenpaaren? Es geht doch darum, beispielsweise für die Schnittpunktbestimmung die Geradengleichungen allgemein aufzulösen, damit ich eine Funktion erhalte, die ich fest in den Code einfügen kann und nachher nur noch mit den konkreten Parametern der zwei Geraden füttern muss. Und das ist wirklich nur eine einmalige Arbeit von 10 Sekunden.
|
Re: Vektorberechnungen
"Ich will etwas lernen, benutze dafür aber eine fertige Library."
Wo ist der Fehler in diesem Satz? :mrgreen: |
Re: Vektorberechnungen
Ich benutze keine fertige Library. Ich möchte Vektorrechnung im Programmierteschnichen Sinne lernen und benutze dafür eine fertige LGS-Solver-Lib. Wo ist das Problem? Die Vectorlib schreibe ich selber.
Flare |
Re: Vektorberechnungen
Das Problem ist, dass du bei einem LGS-Lösungsalgorithmus auch ne Menge lernen könntest. ;)
|
Re: Vektorberechnungen
Zitat:
Nur habe ich mich gerade auf Vektoren versteift...versicht mich nicht davon abzubringen, sonnst klappt das noch! :roll: Flare |
Re: Vektorberechnungen
Irgendwie verstehe ich das Problem gerade nicht ganz. Wozu braucht man überhaupt bei dieser Aufgabenstellung einen Lösungsalgorithmus für ein LGS? Es muss doch überhaupt nichts gelöst werden!
|
Re: Vektorberechnungen
Doch.
Ich brauche z.B. für den Schnittpunkt von 2 Geraden ein Gleichungssystem. Oder bei der Berechnung ob ein Punkt in einer Gerade liegt. Oder hast du dafür andere Lösungsverfahren? Flare |
Re: Vektorberechnungen
Also wenn dus nur für 2- bzw. 3-dimensionale Vektoren brauchst, dann brauchst du kein LGS, weil du das einfach schon per Hand auflösen kannst.
Wenn dus für n-dimensionale Vektoren haben willst, dann ist ein LGS (AFAIK) unumgänglich. Ist aber auch nicht so schwer, nimm dir ein Array, verwende es als erweiterte Koeffizientenmatrix und löse es, indem du die Matrix in Stufenform bringst. |
Re: Vektorberechnungen
Ihr hattet irgendwie recht :roll:
Ich habe jetzt schon einige Sachen programmiert und bis jetzt doch noch kein LGS-Löser gebraucht. Nur jetzt hänge ich an der Umsetzung für das Schneiden von 2 Geraden in der Form
Code:
wobei die Zahlen, die untereinander stehen, die Vektoren (3-Dimensional) sein sollen.
x1 x2 x3 x4
y1 + r * y2 = y3 + s * y4 z1 z2 z3 z4 Ich hatte die Idee, die dritte Gleichung des LGS nach r umzustellen, dann das in die 1. Gleichung einzusetzen und dann diese 1. Gleichung nach s umstellen und das dann in die 2. Gleichung einzusetzen. (Die Reihenfolge dürfte ja eigentlich egal sein) Dann habe ich eine Gleichung, die ich nach r umstellen kann, welche von allen x-, y- und z-Werten abhängig ist. Das r kann ich dann in irgendeine Gleichung einsetzen um s herauszubekommen. Ist diese Herangehensweise überhaupt richtig? :gruebel: Wenn ja, ist das allerdings sehr umständlich, da verschiedene Werte in dieser Gleichung nicht 0 sein dürfen. Gibt es eine einfachere Lösung zum herausfinden des Schnittpunktes zweier Geraden? (für einen Lösungsansatz für Gerade+Ebene und Ebene+Ebene wäre ich auch sehr dankbar!) Flare //Edit: Soory, meinte r anstatt t :oops: |
Re: Vektorberechnungen
Wo nimmst du nun auf einmal "t" her :gruebel: ? Du musst einfach nur die erste und zweite Gleichung nach r auflösen, gleichsetzen und dann nach s auflösen, feddisch.
@3/8: Nope, die Formel bleibt gleich(simpel), es kommt nur pro Dimension eine weitere Prüfung hinzu, ob der gefundene s-Wert auch für alle Dimensionen gültig ist. |
Re: Vektorberechnungen
Danke für die leichtere Gleichung Khabarakh!
Ich habe es jetzt eingebaut, klappt sogar ziemlich gut. Nur leider nicht, wenn X- und Y-Wert des Richtungsvektors 0 sind. Mal sehen inwiefern ich das noch abändere. Ich setze mich jetzt an die anderen Sachen (Abstand von 2 Geraden, Schnittpunkt zwischen Gerade und Ebene, Schnittgerade von zwei Ebenen). Flare |
Re: Vektorberechnungen
Eine 0 als Nenner musst du natürlich davor gesondert behandeln. Das ist der Fall, wenn die Geraden auf der XY-Plane parallel zueinander sind.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 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-2025 by Thomas Breitkreuz