![]() |
Vom Vektor zur Ebene
Help me,
suche die Koordinaten für eine Fläche im Raum. Die Koordinaten sollen in der Form XYZ (ich glaube für Insider kartesisch) sein. Was ich habe (sie Beispiel) ist ein Ausgangpunkt (px, py, pz) und 2 Vektoren(v11, v12, v13) und (v21, v22, v23). Wie komme ich nun zu den Punkten E1(x,y,z), E2(x,y,z), E3(x,y,z). Bei meinem Beispiel habe ich POINT (1.88000008053579, 2.03527408154001E-16, 3.18813142343317) DIRECTION(0.422618258225722, -7.53130584321057E-15, -0.906307788675711) DIRECTION(1., 0., 0.) schönen Sonntag :cry: |
AW: Vom Vektor zur Ebene
E1 = Ausgangspunkt + Vektor1
E2 = Ausgangspunkt + Vektor2 E3 = Ausgangspunkt + Vektor1 + Vektor2 ;) |
AW: Vom Vektor zur Ebene
Danke :wink:
|
AW: Vom Vektor zur Ebene
Aber der Ausgangspunkt liegt doch schon in der Ebene, daher würde doch
Code:
schon reichen, oder? Wenn man das oft macht und sich zwei mal drei Fließkomma-Additionen spart kann da evtl ganz schon was bei herumkommen :)
E1 = Ausgangspunkt
E2 = E1 + Vektor_1 E3 = E1 + Vektor_2 |
AW: Vom Vektor zur Ebene
Man sollte dabei in Betracht ziehen, daß die beiden Vektoren kollinear sein können. In dem Fall wird keine Ebene aufgespannt.
|
AW: Vom Vektor zur Ebene
@Günther
Eine Fläche hat idR 4 Eckpunkte. Es kommt also auf das gewünschte Ergebnis an und nur die berechnet man. Meine Lösung zeigt auf, wie man die "unbekannten" 3 weiteren Eckpunkte berechnet. |
AW: Vom Vektor zur Ebene
Zitat:
|
AW: Vom Vektor zur Ebene
Fläche != Ebene ?
|
AW: Vom Vektor zur Ebene
Aber es gibt auch durch drei Punkte (und dadurch drei Linien) begrenzte Flächen. Diese haben die Eigenschaft, daß sie wirklich flach sind. Bei Flächen, die durch mehr als drei Punkten begrenzt sind, ist das nicht zwangsläufig der Fall.
Allgemein kann man aus den anfangs gegegenen drei Angaben (P, V1, V2) jeden Punkt der Ebene durch Linearkombination ermitteln. Welche Punkte mit E1, E2 und E3 gemeint sind, ist bisher eigentlich nur Spekulation. |
AW: Vom Vektor zur Ebene
bin leider doch noch nicht am Ziel, wenn ich den Vorschlag
E1 = Ausgangspunkt + Vektor1 E2 = Ausgangspunkt + Vektor2 E3 = Ausgangspunkt + Vektor1 + Vektor2 nehme. Was ich vergessen hatte, dass der beschriebene Vektor senkrecht auf der Fläche steht. Wenn ich P als E1 nehme und P+V1 als E2 sieht das schon ganz gut aus. Aber was mach ich mit E3 ??? Kann einer helfen? :cry: |
AW: Vom Vektor zur Ebene
Bei der Informationslage, nein
Es fehlt noch die Angabe in welchem Verhältnis der 2. Vektor zu Fläche steht. |
AW: Vom Vektor zur Ebene
Vielleicht geht da, auch etwas aneinander vorbei.
Ich habe einen Punkt im Raum, an den einen Fläche festgemacht ist. Als zweite steht auf der Fläche eine Gerade wo der Anfangs und Endpunkt durch das jeweilige Delta (x,y,z) zum vorherigen gegeben ist. Wenn ich z.B. einen Zahnstocher in ein Stück Käse stecke und den Zahnstocher am Ende fasse, bestimmt die Lage des Zahnstochers doch auch die Lage vom Käse im Raum. Bei meinem Beispiel habe ich die Ecke vom Käse mit den POINT (1.88000008053579, 2.03527408154001E-16, 3.18813142343317) Die Beschreibung der Lage vom Zahnstocher im Bezug zum Käse übernimmt DIRECTION(0.422618258225722, -7.53130584321057E-15, -0.906307788675711) DIRECTION(1., 0., 0.) Wie Steht nun der Käse im Raum E1, E2, E3 mmmmmmmmmmm (ratlos) :pale: |
AW: Vom Vektor zur Ebene
Also im Kontext einer Geraden von Anfangs und Endpunkt zu sprechen löst bei mir leider nur Kopfschütteln aus.
Die Fläche kann irgendwie geartet sein (z.B. eine fünfeckige Fläche mit den Kantenlängen von jeweils 1) und trotzdem auf der Eben liegen. Aber was für eine Fläche soll dass denn sein? Die Ebene ist mit dem Ausgangspunkt und dem senkrecht stehendem Vektor beschrieben aber für die Fläche fehlen noch die entscheidenen Informationen, die mit dem verbleibenden Vektor nicht ausreichend beschrieben werden. |
AW: Vom Vektor zur Ebene
Hallo,
ein bisschen rate ich jetzt auch ... vielleicht hilft dir ja dieser kurze Beitrag ![]() Wenn ich das richtig in Erinnerung habe, reicht ja 1 Punkt (Stützvektor) und 2 (Richtungs-)Vektoren um eine Ebene auzuspannen. (danach kann geprüft werden, ob ein Punkt auf der Ebene liegt oder Eben nicht) Also wie gezeigt den Punkt P als Ausgangspunkt(Stützvektor für Ebenengleichung E1). Die beiden Multiplikatoren r und s berechnen! (Gleichungssystem lösen - einsetzen in die Ebenengleichung - sollte E1 ergeben). Analog Gleichungen für E2 und E3 aufstellen und die Punkte berechnen Die beiden anderen Ebenengleichungen sollten sich aus den Endpunkten der beiden Vektoren (Stützvektoren E2 und E3) ergen. (also 1 Ebene und 3 Ebenengleichungen um die selbe Ebene zu beschreiben) Um einen Schnittpunkt mit der Ebene zu berechnen wäre, glaube ich noch ein zweiter Punkt nötig. Was wohl ginge, wäre die Angabe eines Richtungsvektors, die im rechten Winkel zur Ebene steht und dann durch "Verschiebung" auf der Ebene entsprechende Gradengleichungen ergibt. Hoffentlich habe ich dich jetzt nicht noch mehr verwirrt. Möchte ja nur helfen ;-) .. und sorry an alle Mathematiker oder mathematisch interessierten unter Euch. Viel Erfolg cu Micha |
AW: Vom Vektor zur Ebene
Sry, aber aus deinen 3 Beiträgen werde ich nicht schlau...
Dein letzter Beitrag ist am verwirrendsten. Versuchs mal mit einer 3D-Skizze! |
AW: Vom Vektor zur Ebene
Liste der Anhänge anzeigen (Anzahl: 1)
um die Sache etwas zu vereinfachen Zhabe ich mal ein Skizze gemacht.
Was ich habe ist der Punkt P mit den Raumkoordinaten PX, PY, PZ und den Abstand von V1 zu P und V2 zu V1. Was ich suche sind 3 Punkte E1, E2, E3 der Ebene auf der V1 V2 senkrecht steht. Zwei Punkte auf der Fläche dürfte ich ja schon mit P und V1 haben. Also kann E1 und E2 schon wegfallen. Wie komme ich aber an die XYZ Koordinate von E3 ??? :pale: |
AW: Vom Vektor zur Ebene
Nein, du kannst E1..E3 eig. so gar nicht bestimmen, es fehlen wichtige Informationen:
- du scheinst nach den "Ecktpunkten" eines viereckigen Objektes zu suchen, nicht nach bestimmten Punkten der "Ebene" (Ebene != Viereck) - sofern es sich um ein viereckiges Objekt handelt, können wir weiter reden..: - wo genau steht der Punkt v1 auf diesem viereck? In der Mitte? - achja, mit p, abstand zu v1, abstand zu v2 kannste im Grunde unendlich viele v1 und v2 berechnen, weil die Lage im Raum nicht bekannt ist (Drehung) Um was geht es eigentlich - versuch mal, zu erklären, was für ein Problem du mit diesem Vorhaben lösen willst - vlt gehts ja einfacher! |
AW: Vom Vektor zur Ebene
der Punkt steht in der Mitte der Fläche (Rechteck). P ist genau in der Mitte der Kante (blöd gezeichnet). :cry:
|
AW: Vom Vektor zur Ebene
Ist v1 zufällig genau das Kreuzprodukt von v2 und (E2 E3)? Dann könnte man, unter der Voraussetzung, dass es sich um ein Rechteck handelt, also die Winkel alle 90° sind, den Vektor (E2 E3) bestimmen, indem man die Formel für das Kreuzprodukt umstellt. Falls v1 nicht das Kreuzprodukt ist, dann ist es leider unterbestimmt. Du brauchst zumindest die Länge von (E2 E3).
|
AW: Vom Vektor zur Ebene
Zitat:
|
AW: Vom Vektor zur Ebene
Liste der Anhänge anzeigen (Anzahl: 1)
Leider noch nicht am Ziel
Habe es eben mit den Vorschlag E3 := (V2-V1) x (P-V1) + V1 siehe Quelltext versucht aber da kommt nicht das gewünschte Ergebnis raus. In meinem Beispiel hat P als Ausgangspunkt und ein Punkt der Dreiecksfläche E1 die Koordinaten (10, 0, 5) im Weltkoordinatensystem. Auf den 2. Punkt der Dreiecksfläche E2, steht eine Senkrechte. Der Anfangspunt der Senkrechten hat eine Differenz zu P von (-5, 0,-5). Es ergeben sich damit die Weltkoordinaten für E2 von (5, 0, 0). Der Endpunkt der Senkrechten V2 hat zum Anfangspunkt der Senkrechten V1 eine Differenz von (-5, 0, 5). Für den Punkt E3 gilt: Der Abstand zu V1 = Abstand von V1 zu P = Abstand von V1 zu V2. Weiter ist der Winkel P/V1/E3, P/V1/V2 und V2/V1/E3 0 90°. Wie kann ich mir nun E3 ausrechnen, wenn P, V1 und V2 gegeben sind? Das Ergebnis ist im Beispiel (5, 5, 0) aber wie kann ich mir dieses ausrechnen? Habe dazu auch noch einmal eine Skizze gemacht.
Delphi-Quellcode:
type Tpoint3D = record X : single; Y : single; Z : single; end; //------------------------------------------------------------------------------ // Bestimmen des 3. Punktes einer Fläche //------------------------------------------------------------------------------ procedure fl_3Punkte(p, v1, v2 : TPoint3D; var E1, E2, E3 : TPoint3D); var d1, d2, kp : TPoint3D; begin E1 := P; E2.x := p.x + v1.x; E2.y := p.y + v1.y; E2.z := p.z + v1.z; // EP3 = (V2-V1) x (P-V1) + V1 ???? d1.x := v2.x - v1.x; d1.y := v2.y - v1.y; d1.z := v2.z - v1.z; d2.x := p.x - v1.x; d2.y := p.y - v1.y; d2.z := p.z - v1.z; kp.x := (d1.y*d2.z) - (d2.y*d1.z); kp.y := (d1.z*d2.x) - (d2.z*d1.x); kp.z := (d1.x*d2.y) - (d2.x*d1.y); E3.x:= kp.x + v1.x; E3.y:= kp.y + v1.y; E3.z:= kp.z + v1.z; end; |
AW: Vom Vektor zur Ebene
Deine Bezeichnungen von V1 und V2 passen in der Zeichnung nicht zu den Werten. V1 und V2 sind offensichtlich als Differenzvektoren angegeben. Insofern ist die Angabe V1 = E2 schon mal falsch, was du ja auch in deinem Code eindrucksvoll belegst:
Delphi-Quellcode:
Demnach müsste die Berechnung mit dieser Notation also folgendermaßen sein:
E2.x := p.x + v1.x;
E2.y := p.y + v1.y; E2.z := p.z + v1.z;
Delphi-Quellcode:
oder im Code:
v3 := v1 X v2
E3 := E2 + k*v3
Delphi-Quellcode:
Der Faktor k muss dann eben so gewählt werden, daß die Abstandsbedingung eingehalten wird - sollte nicht so schwer sein. Du kanns k auch negativ machen, um die zweite mögliche Lösung zu bekommen, die nach den gegebenen Bedingungen möglich ist.
v3.x := (v1.y*v2.z) - (v2.y*v1.z);
v3.y := (v1.z*v2.x) - (v2.z*v1.x); v3.z := (v1.x*v2.y) - (v2.x*v1.y); |
AW: Vom Vektor zur Ebene
dem Ziel schon ganz nahe,
also erst einmal Danke. Mit der Berechnung von E2 hattest Du Recht, V1 ist ja Differenz und P fehlte. der Quelltext sieht jetzt wie folgt aus
Delphi-Quellcode:
wenn ich als Faktor k=1 angegeben habe, hatte ich erwartet, dass E3.y = 5 und nicht 50 ist. Mit k = 0.1 erscheint dort 5. Was hat es mit den Faktor auf sich oder ist noch wo anders etwas vergraben?
type Tpoint3D = record
X : single; Y : single; Z : single; end; //------------------------------------------------------------------------------ // Bestimmen des 3. Punktes einer Fläche //------------------------------------------------------------------------------ procedure fl_3Punkte(p, v1, v2 : TPoint3D; var E1, E2, E3 : TPoint3D); var v3 : TPoint3D; k : single; begin k := 1; E1 := P; E2.x := p.x + v1.x; E2.y := p.y + v1.y; E2.z := p.z + v1.z; v3.x := (v1.y*v2.z) - (v2.y*v1.z); v3.y := (v1.z*v2.x) - (v2.z*v1.x); v3.z := (v1.x*v2.y) - (v2.x*v1.y); E3.x := E2.x + k*v3.x; E3.y := E2.y + k*v3.y; E3.z := E2.z + k*v3.z; end; function set_point3(x, y, z : single) : TPoint3D; begin result.x := x; result.y := y; result.z := z; end; ..... Aufruf fl_3Punkte fl_3Punkte(set_point3(10, 0,5), set_point3(-5, 0, -5), set_Point3(-5, 0, 5), E1, E2, E3); Als Ergebnis bekomme ich E1 = (10,0,5) E2 = (5,0,0) E3 = (5, [COLOR="Red"]50[/COLOR], 0) Beste Grüße |
AW: Vom Vektor zur Ebene
Das Kreuzprodukt multipliziert ja zwei Vektoren:
Delphi-Quellcode:
Da v1 und v2 senkrecht aufeinander stehen, ist |v3| = |v1|*|v2|, also dem Produkt der Längen der beiden Vektoren. Da beide Längen aber gleich sind, musst du k := 1/|v1| = 1/sqrt(50) setzen, damit v3 die gleiche Länge bekommt, wie die beiden andere v-Vektoren. Da v3 nur einen y-Anteil hat (v1 und v2 haben jeweils nur x/z-Anteile, spannen daher also eine Ebene in x/z auf), errechnet sich der zu ca. 7.
v1 = (-5, 0,-5)
v2 = (-5, 0, 5) v3.x := (v1.y*v2.z) - (v2.y*v1.z); => 0*5 - 0*-5 = 0 v3.y := (v1.z*v2.x) - (v2.z*v1.x); => -5*-5 - 5*-5 = 50 v3.z := (v1.x*v2.y) - (v2.x*v1.y); => -5*0 - -5*0 = 0 Dabei ist anzumerken, daß deine Lösung für E3 = (5, 5, 0) einen Abstand zu E2 = (5, 0, 0) von Sqrt((5-5)² + (5-0)² + (0-0)²) = Sqrt(25) hat, während der Abstand zwischen E1 = (10, 0, 5) und E2 mit Sqrt((10-5)² + (0-0)² + (5-0)²) = Sqrt(50) ist, was deiner Abstandsbedingung widerspricht. Der korrekte Wert für E3 wäre demnach (5, Sqrt(50), 0). |
AW: Vom Vektor zur Ebene
:oops:
gibt es nicht einen universellen Ansatz, so das man k bestimmen kann, das es immer passt? Stehe gerade mächtig auf den Schlauch. |
AW: Vom Vektor zur Ebene
Zitat:
Auch wenn v1 und v2 nicht gleich lang sind, kannst du immer k := 1/|v2| rechnen. Grundlage dafür ist die Gleichheit der Abstände zwischen E1/E2 und E2/E3. Damit lässt sich leider kein E3(5,5,0) heraus bekommen, da dieses von der Länge her nicht passt. Dein E3 liegt zwar in der Ebene, hat aber zu E2 den falschen Abstand. Wenn E3(5,5,0) wirklich die gewünschte Lösung ist, dann stimmen deine Bedingungen nicht. |
AW: Vom Vektor zur Ebene
Uwe hat Recht.
Hatte einen Denkfehler denn wenn die Länge von E2 zu E3 die gleiche wie von E1 zu E2 sein soll und das ganze einen rechten Winkel hat, kann da nur Wurzel aus 50 rauskommen, denn dafür gibt es den Pytagoras. Groschen ist gefallen. Also noch einmal Danke für die Ausdauer. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 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