Schnittpunkt Gerade und Ebene

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Foppele

Betreff: Schnittpunkt Gerade und Ebene

BeitragMo, Dez 10, 2007 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
wenn jemand mathematisch fit ist wäre es sehr schön wenn er mir bei folgendem Problem helfen könnte:

Ich will mir ein modifiziertes LinePick bauen. Normales LinePick gibt ja immer die erste Pickable Entity zurück, die getroffen wird. Ich will aber nicht irgendeine, sondern eine ganz bestimmte, genauergesagt ein einzelnes triangle.
Ich brauche also eine Formel um den Schnittpunkt einer Geraden mit einer von 3 Punkten aufgespannten Ebene zu berechnen.
So weit so gut, die Formel zu finden war nicht schwer, sie verstehen dagegen sehr Confused

Geschweige denn die Formel so umzubauen dass ich am Ende das Ergebnis habe. Ihr seht schon, die letzten Jahre Mathe sind anscheinend spurlos an mir vorübergezogen ( ist aber auch schon ein paar Jährchen her).

Hat jemand 'nen Link mit für Doofe verständlicher Erklärung oder gar die Geduld, es mir kurz zu erklären?
Gegeben sind 3 Punkte für das Triangle sowie ein Startpunkt und ein Richtungsvektor für das LinePick.

[EDIT] Ich habe gerade gemerkt, ich brauche nicht den schnittpunkt mit einer Ebene sondern mit dem Triangle, was eine andere Formel wäre. Ich brauche auch nicht mal zwingend den Schnittpunkt sondern muss nur wissen ob es einen Schnittpunkt gibt oder nicht.
 

Dreamora

BeitragMo, Dez 10, 2007 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie zb ql:pickedtriangle ?

Und dafür gibts keine "Erklärung für Dumme"
Entweder du bist Fit in Vektor Mathe und Geraden - Flächen Gleichungen oder der Tunnel wird sehr lang bis Licht am Ende kommt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Foppele

BeitragMo, Dez 10, 2007 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ich brauche sowas wie PickedTriangle, das normale LinePick geht nicht aus folgendem Grund:
Es gibt mehrere Entities die pickable sind, ich will aber checken ob ein ganz bestimmtes gepicked wird.

Dabei darf mir aber keins von den anderen in den Weg kommen.

In Vektor Mathe hab ich schon so einige Fortschritte gemacht Cool aber ich brauche immer ein komplett durchgerechnetes Beispiel um etwas zu verstehen, und ich habe ziemliche Probleme wenn die Formeln zu allgemein gehalten sind. Ich habe aber auch noch keine Formel für mein Problem gefunden. Zu Schnittpunkt Gerade-Ebene schon, aber Gerade-Polygon/Triangle nicht.

P.S. Du verstehst es echt einem Mut zu machen Rolling Eyes

Noobody

BeitragMo, Dez 10, 2007 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Schnittpunktberechung Linie/Polygon geht eine Schnittpunktberechnung Linie/Ebene voraus.
Nachdem du den Schnittpunkt auf der Ebene berechnet hast, musst du noch feststellen, ob der Punkt innerhalb der Strecken liegt, die das Triangle umschliessen.
Dafür ist die Hessesche Normalform ganz praktisch, wenn du die Berechnungen einschränken willst.
Zuerst schauen, ob der Punkt auf der richtigen Seite der Linie liegt, bevor du eine genauere Berechnung durchführst, das spart Berechungszeit.
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
 

Dreamora

BeitragMo, Dez 10, 2007 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Foppele hat Folgendes geschrieben:
Ja, ich brauche sowas wie PickedTriangle, das normale LinePick geht nicht aus folgendem Grund:
Es gibt mehrere Entities die pickable sind, ich will aber checken ob ein ganz bestimmtes gepicked wird.

Dabei darf mir aber keins von den anderen in den Weg kommen.


Wo ist da das Problem?
Einfach LinePick und wenn du auf etwas pickst, einfach vom entsprechenden Punkt aus nochmal picken (ein wenig weiter versetzen), bis du weiter gepickt hast als die objekte auseinander waren.

zb.

Deine variante wird nicht besser geschwindigkeitsmässig sondern potentiell viel langsamer, denn ebenen gleichungen etc mit blitz3d lösen wird nicht gerade "die schnelle Sache", da Mark leider die Matrizenbefehle nie rausgegeben hat um wirklich was gegen Matrizen zu transformieren.

EDIT:
Einzige Ausnahme sei hier wenn du deine Lösung mit TForm umsetzen kannst, das wär schnell
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Mo, Dez 10, 2007 23:42, insgesamt einmal bearbeitet

Foppele

BeitragMo, Dez 10, 2007 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, die Idee kam mir schon aber ich dachte anders wär's eleganter. Ich hab den mathematischen Ansatz inzwischen geschnallt, auch wie man einfach testen kann ob das Triangle getroffen wird. Aber leider hänge ich noch bei der Auflösung des linearen Gleichungssystems zur Schnittpunktbestimmung...

...danke für die Denkanstösse, ich werd dann doch LinePick benutzen.
 

Dreamora

BeitragMo, Dez 10, 2007 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab dir oben noch was angefügt weils vielleicht ein wenig sehr hart geklungen hat.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Mr.Keks

BeitragDi, Dez 11, 2007 0:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Seite für alle derartigen Probleme und noch mehr: http://www.realtimerendering.com/int/ (leider viele tote Links)

Ansonsten gibt es auch immer Sources auf BB.com http://www.blitzbasic.com/code...p?code=942
MrKeks.net

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group