Prüfen ob Vector (im 3d Raum) in einer Ebene ist?
-
Hallo Leute,
ich bin Nueling in Sachen Vector Rechnung, alos folgendes
ich habe eine Polygon welches mit 3 Vectoren definiert ist. Nun will ich prüfen ob ein 4 Vector bzw. ein Punkt im 3D raum, genau in der ebee bzw. fläche des Polygon liegt.. kann mir jemand helfen
Danke Leute und schönes WE
-
Du stellst mit drei Punkten die Ebenengleichung auf und guckst, ob sie eine Lösung für den vierten Punkt hat.
P.S.: Gegeben drei Punkte A, B, C. Dann ist die (bzw. eine) Ebenengleichung dafür:
D = A + x (B-A) + y (C-A)
Alle Punkte D die so beschrieben werden liegen in der Ebene in der A,B,C liegen.
-
Wo ist denn die z-Koordinate?
-
Andere Möglichkeit: Normalenvektor bestimmen und Ebenengleichung in Normalform hinschreiben.
Für drei gegebene Punkte a,b,c bekommst du den Normalenvector als Kreuzprodukt von (a-b) x (a-c)
Ebenengleichung: n*x + d = 0
* ist das Skalarprodukt.
Dabei ist x irgendein Punkt, n der Normalenvektor und d ein Skalar. Jedes x, dass in der Ebene liegt, erfüllt die Gleichung. Weil wir ja schon n kennen, nehmen wir einfach einen der drei Punkt (z.b. a) und setzen ein: d = -(n*x).
Wenn du jetzt für irgendeinen Punkt y testen willst, ob er in der Ebene liegt, einfach n*y + d ausrechnen und schauen, ob Null rauskommt.
-
knivil schrieb:
Wo ist denn die z-Koordinate?
Ich glaube du hast meine Gleichung nicht verstanden. x und y sind keine Koordinaten sondern Laufvariablen. x und y in der Ebene wenn du so willst.
-
Hey danke leute,
könnt ihr mir evlt. ne genaueren Mathmatischen Ansatz bzw. Formel posten
Also ein Dreikeck welches aus 3 Vektoren A,B,C definiert ist, und prüfen ob Vektor P exkt in der Fläche/Ebene des dreiecks liegt.
Wäre echt net von euch.. ich komm net weiter
Grüße
-
Definiere Vektor a = A-C, Vektor b=B-C
Sei dein Punkt D. Dann gibt es genau eine Lösung (x,y) der Gleichung D = C + x*a +y*b
Falls für diese Lösung der Gleichung gilt 0 < x+y < 1, dann liegt der Punkt D im Dreieck.
Habe ich mir gerade im Kopf ausgedacht ohne es hinzumalen. Hoffe es stimmt. Prüf es lieber selber nochmal. Aber als Ansatz sollte es mindestens reichen.
edit: Oh, ich glaube ich habe deine Frage falsch verstanden, du willst nur wissen ob der Punkt in der Ebene des Dreiecks liegt, nicht im Dreieck selbst. Aber: Häh? Das ist doch genau die gleiche Frage wie oben, nur dass du das Wort "Polygon mit drei Ecken" durch "Dreieck" ersetzt hast, was absolut keinen Unterschied macht.
-
Ich würde mir drei Eckpunte A, B, C des Dreiecks nehmen und mit i=B-A und j=C-A und mit dem zu untersuchenden Punkt P nebst k=P-A erstmal drei Vektoren bauen und die Frage angehen:
Liegt Vector k auf der von i und j aufgespannten Ebene?
Dazu rechne ich einen Vektor aus, der auf i und j senkrecht ist, also s=ixj http://de.wikipedia.org/wiki/Kreuzprodukt
Und schaue dann, ob auch k senkrecht zu s ist, also if(k*s==0) http://de.wikipedia.org/wiki/SkalarproduktOder anders ausgedrückt, if(spatprodukt(B-A,C-A,P-A)==0) http://de.wikipedia.org/wiki/Spatprodukt
-
Hey Ihr,
ich danke schonmal für die Resonaz, und das hilft mir weiter, nun hab ich aber noch ne Problemstellung...
Sei ein Polygon,Dreieck, Triangle.. was auch immer;) gegeben du Vektor A,B,C!
Nun hab ich nen Vektor P , und muss prüfen ob diese durch die Dreieck geht, und an welchem Punkt. Das ganz nenet man auch "TriangleIntersection". Habe mir paar seiten angeschaut, Wikipedia etc. Aber da werden die Formel so komplex beschrieben, under hergeleitet, da komm ich net mit;)
Meint ihr könnten mir da nen prakmatischen Ansatz geben?
Grüße und Danke;)
-
So schwer ist das nicht. Dazu gibts massig gute fertige Tutorials.
Nur mal als Tipp:
1. berechne den Schnitt der Gerade mit der Ebene des Dreiecks
2. teste ob der Schnittpunkt im Dreieck liegtfertig.
//edit Ein Vektor kann pbrigens nicht durch ein Dreieck gehen. Denn ein Vektor ist nichts anderes als ein Punkt oder eine Richtung. Wenn du etwas haben möchtest, das ein Dreieck schneidet, dann brauchst du etwas wie eine Gerade oder eine Ebene oder sowas...nur als Anmerkung, da die Vokabeln wichtig sind.