Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Algorithmus zur Umrechnung von 3D in 2D Punkte ?? (https://www.delphipraxis.net/73-algorithmus-zur-umrechnung-von-3d-2d-punkte.html)

erniepb 9. Jun 2002 17:45


Algorithmus zur Umrechnung von 3D in 2D Punkte ??
 
Hallöchen ..
Also gleich zu meinem Problem .. ich habe eine "Tabelle" mit den Koordinaten von Punkten im 3D-Raum (kartesisch) .. hat jemand eine Idee wie ich die Abildungskoordinaten der 3D-Koordinaten auf ein Ebene berechne, die nicht plan-symmetrisch zu einer der koordinatenachsen des 3D Koordinatensystemes ist??

Ich verzweifle momentan so n bisschen dadran .. wär echt toll wenn mir jemand helfen könnte .. Literatur zum Nachlesen wär da auch nicht schlecht .. muss ja nicht mal der code dafür sein .. was mir eigentlich auch lieber wär .. Danke !!

OregonGhost 10. Jun 2002 09:43

Ich würde irgendwie so daran gehen:
1. Normalenvektor zur Ebene berechnen.

Jetzt kommt's drauf an, ob du perspektivische Abbildung willst (a) oder nicht (b).

FÜR JEDEN PIXEL {
ENTWEDER
2a. Definiere den Beobachterpunkt hinter der Ebene (in der Mitte, auch wenn eine Ebene keine Mitte hat (c; ). Ziehe jetzt vom Beobachterpunkt zu jedem Punkt, den du zeichnen willst, eine Gerade. Der Schnittpunkt der Geraden mit der Ebene ergibt den projizierten Punkt.
ODER
2b. Ziehe vom zu zeichnenden Punkt eine Gerade mithilfe des Normalenvektors der Ebene. Wiederum ergibt der Schnittpunkt der Geraden mit der Ebene den projizierten Punkt.
3. Zeichne den Punkt.
}

So, und wie du wolltest hast du kein Byte Code bekommen ;c)

erniepb 10. Jun 2002 15:18

ja danke !! so ne idee ist mir letzte nacht auch noch gekommen.. naja da fehlt mir aber noch n bisschen Hintergrundwissen bezüglich der Vektorrechnung aber ich hoffe einfach mal mit n bisschen lesen in so mathebüchern schaft man das schon ganz gut ..
zu dem perspektivisch kannst du da noch n bisschen was sagen?? da hat mit da irgendwie ne gehirnwindung gefehlt..

Aber auf alle Fälle erstmal schon ganz doll viel danke..

sakura 10. Jun 2002 15:50

Das folgende Bild gibt die mathematische Grundlage zur Umrechnung von 3D nach 2D.

http://www.gatenetwork.com/delphi-sa...ge-monitor.gif

Ich habe mal ein Programm getippt, welches einen/zwei Drahtgitter-Würfel in Delphi/Assembler animiert. Recht primitiv, dürfte aber weiterhelfen. Ich werde mal danach suchen.

Erinnere mich dran, wenn ich es vergessen sollte.

P.S. Und da war der erste Beitrag da... :)

OregonGhost 11. Jun 2002 16:44

sakuras schönes Bild sagt eigentlich alles zur Perspektive. Im Grunde ist es auch genauso wie isometrisch, nur dass der Richtungsvektor der Schnittgeraden bei Isometrie gleich dem Normalenvektor der Ebene ist, und bei Perspektive ist gleich dem Vektor zwischen zu zeichnendem und Augenpunkt.
Wie auf dem Bild ist es auch mit Strahlensatz möglich, so ist schließlich auch D**M (indiziert (c; ) entstanden, soweit ich weiß.
Aber ich hab' in der Oberstufe (die ich endlich hinter mir hab' - heute war Abistreich und wird Lichtungsparty sein) soviel Vektormathematik gehabt, dass es mir persönlich fast einfacher scheint, auch wenn die Mathematik hinterm Strahlensatz sicher leichter nachzuvollziehen ist. Aber egal, Vektoren sind cool 8) und vergiss nicht, dass du beim Strahlensatz, da du eine "krumme" Ebene verwendest, auch noch die Entfernung vom Punkt zur Ebene ausrechnen musst, womit wir - schwupps - wieder beim Normalenvektor wären ;c)

Aber egal, jetzt weißt du bestimmt genug, um es so zu machen wie du willst ;c)

erniepb 11. Jun 2002 21:45

jepp .. jetzt weiß ich größten teils bescheid ..
Danke für die Hilfe !!!!!

sakura 12. Jun 2002 08:24

Hi erniepb,

ich bin einfach noch nicht dazu gekommen den Quellcode aufzugabeln. Ich habe es aber auch nicht vergessen :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz