rechteckige plane im 3d raum anhand 3 punkten erstellen
Übersicht

feuerball11Betreff: rechteckige plane im 3d raum anhand 3 punkten erstellen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich habe folgendes problem:
Ich will anhand 3 punkten, die sich im 3d-raum befinden ein rechteck erstellen. die 3 punkte sind jeweils in einem type gespeichert. mit den jeweiligen 3d-koordinaten. nun will ich aus den 3 punkten ein rechteck erstellen. beispiel im 2d-raum O---------A-------------O | . . . . . . . . . . . . . . . .| | . . . . . . . . . . . . . . . .| | . . . . . . . . . . . . . . . .| | . . . . . . . . . . . . . . . .| | . . . . . . . . . . . . . . . .| A-------------------------A (Punkte ignorieren) Hierbei sind die drei punkte A gegeben, und die zwei punkte O gesucht. Nun die frage. wie schaffe ich es am besten, die zwei punkte O zu bestimmen. problem ist: das rechteck befindet sich in einem 3d-raum und ist in einer belibigen richtung gedreht. PS: code lass ich mal noch raus, weil im code nur die bestimmung der 3 koordinaten steht, und ich glaube das kann sich jeder vorstellen oder? falls nicht schreibe ich den code noch später rein. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Normaler weise erstellt man aus vier Vertices, also zwei Triangles, ein Quad.
Aber wenn deine Methode unbedingt sein muß, so nimm die Differenz zwischen A Links/Unten zu A Rrechts/Unten und rechne diese /2 zu A Oben jeweils hinzu, um die Eckpunkte O zu berechnen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. ich mach das ganze ja über trangles bzw vertices, aber ich will, das der user dann eine gerade fläche bekommt. könnte er alle 4 erstellen wäre es in einem 3d-raum sehr schwer eine gerade fläche zu bekommen.
2. es handeld sichum ein 3d-raum, da kann ich das wie du gesagt hast nicht so einfach machen. 3. der obere punkt A kann irgendwo auf der line sein. er muss nicht exakt auf der mitte sein. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also mit der von mit beschriebenen Methode würdest du eine flache Fläche bekommen. Also keine gewölbte Fläche oder so. Selbst die Oberkannte wäre gerade. Das obere A würde genau zwischen den beiden Os liegen und somit sichtbar unter gehen, wenn die UV-Koordinaten durchängig wären.
Aber wie gesagt, Quads erstellt man eigendlich nicht so. Es gibt zum Beispiel wunderbare TForm... -Befehle bei Blitz3D, die einem das arbeiten mit diesem erheblich erleichtern. Und schnell sind sie auch noch. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
eine kommplette gerade fläche will ich ja haben. auserdem kann das A auch auserhalb des rechtecks ein. es soll blos ein punkt zum erstellen sein. und tform kenn ich noch nicht, ich wüste aber uach nicht wie mir das helfen sollte. | ||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Angenommen, A1 und A2 sind die beiden Punkte links und rechts unten in deiner Zeichnung und A3 der Punkt oben, so würde ich folgendermassen vorgehen:
Zuerst bildest du zwei Ebenen, deren Ursprung im Punkt A1 bzw. A2 liegt und deren Normalenvektor dem Vektor A2 - A1 entspricht. Dann bildest du eine Gerade, die durch den Punkt A3 geht und parallel zu A2-A1 verläuft. Dann musst du nur noch diese Gerade mit den beiden Ebenen schneiden und erhältst die Koordinaten von O1 bzw. O2. Wenn du willst, kann ich dir einen entsprechenden Code schreiben, wirklich schwierig ist es aber nicht. Du brauchst eigentlich nur eine Ebene-Gerade-Schnittberechnung, der Rest ist in ein paar Zeilen erledigt |
||
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 |
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ein bespiel-code wäre nett. ich habe mich in vektoren noch nicht eingearbeitet, so weis ich auch nicht wie diese funktionieren. ich werde sie mir mal anschauen und das versuchen, wass du gesagt hast. nen beispiel wäre trotzdem nett. | ||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es kann sein das ich mich irre, aber kann es nicht sein das die Fläche dann falschrum sein kann, also das man sie von hinten sieht(dann ja eben nicht ![]() Gruß Kruemelator |
||
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das mit der seite ist eigentlich egal, da ich 4 triangles erstellen will, 2 für jede seite. dann ist das rechteck sozusagen beidseitig. ich brauche halt erst die 4 eck-punkte, welche ich aus den ersten beiden + dem dritten erschließen will. | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine Strategie ist auch noch nicht eindeutig...
Die drei Punkte A ergeben nur ein Dreieck im Raum. Nun gibt es theoretisch von jeder der 3 Seiten ein machbares Rechteck. Ist den geregelt, welche der 3 Seiten als 1. Außenkante des Rechtecks festgelegt sein soll? |
||
- Zuletzt bearbeitet von Midimaster am Mo, Dez 14, 2009 23:03, insgesamt einmal bearbeitet
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das verstehst du falsch. ich will nicht von den ausen-kanten des dreiecks ein rechteck bilden, sondern anders:
der erste punkt A ist der anfangs-punkt. danach kommt ein punkt B welcher eine linie zum punkt A bildet. nun will ich mit dem 3. punkt C eine höhe auf diese linie bilden und daraus dann des rechteck bilden. also so: ------------C-------------- | . . . . . . . . . . . . . . . . | | . . . . . . . . . . . . . . . . | | . . . . . . . . . . . . . . . . | | . . . . . . . . . . . . . . . . | | . . . . . . . . . . . . . . . . | A-------------------------B |
||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mir ist noch nicht alles klar.
Ist eine Seite des Dreiecks (hier A und B) Parallel zum Boden, oder ist es beliebig gedreht? Und noch eine andere Frage: Liegt Punkt C auf der Seite des Rechtecks oder kann es auch außerhalb liegen? Ich meine so: C. . . . . . . ------------------- . . . . . . . . |. . . . . . . . . . . | . . . . . . . . |. . . . . . . . . . . | . . . . . . . . |. . . . . . . . . . . | . . . . . . . . |. . . . . . . . . . . | . . . . . . . . |. . . . . . . . . . . | . . . . . . . . |. . . . . . . . . . . | . . . . . . . . A-----------------B Das ist vielleicht auch noch wichtig. |
||
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. die linie a-b kann frei im raum liegen.
2. der punkt c kann auch auserhalb liegen, richtig |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ganze läßt sich mit Vektoren und Matrizen rechnen. Ich habe das selbst noch nicht gemacht, aber das dürfte weiterhelfen:
http://members.chello.at/gut.j...toren1.htm ab Seite 4 wird es, glaub ich, interesant. oder hier: http://www.mathe-online.at/nml...KAP-07.pdf Möglicherweise würde die Frage in einem der 3d foren besser beantwortet werden können. möglicherweise git es dort sogar schon Code oder spezielle Befehle (unter B3D) dazu. |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab das heute Abend noch schnell umgesetzt BlitzBasic: [AUSKLAPPEN] Local O1#[ 2 ], O2#[ 2 ] Die ersten neun Parameter sind die XYZ-Koordinaten der Punkte A1, A2 und A3 (in der Reihenfolge), die letzten zwei sind jeweils ein Blitzarray für die Resultate der Berechnung, also die beiden Punkte O1 und O2 in deiner ersten Skizze. |
||
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 |
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich chack da jetzt nicht ganz durch, es ist aber auch früh am morgen. ich schau mir das mal heute nachmittag an. herzlichen dank. | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Noobody:
Sieht ja genial aus! Da soll es hier im Forum auch ein Tutorial von Dir dazu geben...aber ich kann es nicht finden. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group