Von 3D auf 2D projizieren. < Lin. Algebra/Vektor < Oberstufe < Schule < Mathe < Vorhilfe
|
Hallo,
ich schätze dies ist eine ziemlich einfache Frage - aber ich hab so ziemlich überall nach einer Formel für dies geschaut - und meine Lehrerin scheint nichtmal zu wissen worum es geht.:
Ich habe einen 3D Punkt P(x,y,z) und möchte den als einen Punkt P'(x,y) darstellen. Dafür kenne ich die Winkel mit denen der 3D-Graph auf den Drei Graden geneigt ist. Der Nullpunkt von den zwei Grafen soll der gleiche sein. (ich hoffe die Bilder im Anhang beschreiben es verständlicher).
Was ich brauche ist eine Formel um x' und y' aus Winkelx (-,y,z) und P(x,y,z) zu errechnen um ein Bild projizieren zu können.
Es wär fantastisch wenn Jemand es für Zentral- oder Parallel - Projektion erklären könnte
(Zentral wäre am besten, auch wenn man dann [glaube ich] noch einen zusätzlichen punkt brächte [?]).
Anhänge:
http://ypsilondownloads.de/diagram.png
http://ypsilondownloads.de/diagram2.png
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
http://www.fet.at/fet/index.php?/fet/phorum/list.php
http://www.chemieonline.de/forum/showthread.php?t=43713&styleid=7
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich] Anhang Nr. 2 (Typ: png) [nicht öffentlich]
|
|
|
|
Hallo,
bei der Zentralprojektion hast Du ein festes Projektionszentrum Z. Verbindet man Z mit P, so entsteht folgende Gerade:
[mm]\overrightarrow x \; = \;Z\; + \;t\;\left( {P\; - \;Z} \right)[/mm]
Diese Gerade bringst Du nun zum Schnitt mit der Ebene [mm]\left( {\overrightarrow x \; - \;\overrightarrow q } \right)\;\overrightarrow n \; = \;0[/mm].
Daraus folgt nun der Parameter t und somit der Punkt P' auf der Ebene.
Bei der Parallelprojektion ist der Projektionsvektor konstant. Es entsteht somit die Gerade [mm]\overrightarrow x \; = \;P\; + \;t\;\overrightarrow {p_v } [/mm]. Hier benötigst Du natürlich das Bild P' des Punktes P. Daraus folgt dann der Projektionsvektor [mm]\overrightarrow {p_v } \; = \;P'\; - \;P[/mm].
Gruß
MathePower
|
|
|
|
|
$ [mm] \left( {\overrightarrow x \; - \;\overrightarrow q } \right)\;\overrightarrow [/mm] n [mm] \; [/mm] = [mm] \;0 [/mm] $ verstehe ich nicht so richtig - was stellen die Vektoren $ [mm] \overrightarrow [/mm] q [mm] \; [/mm] $ und $ [mm] \overrightarrow [/mm] n [mm] \; [/mm] $ dar und, wie binde ich die Winkel des Graphen zur Ebene ein?
Entschuldigung, ich bin ziemlich unsicher mit Vektoren und so - und frage warscheinlich grad nach relativ einfachen Dingen.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:05 Mi 11.05.2005 | Autor: | leduart |
Hallo
1. So wie dein Bild es suggeriert ist einfach (bei senkrechter Projektion) x'=x; y'=y
Wenn die Projektion schräg ist hast du 2 Winkel: [mm] \alpha [/mm] = Winkel den der Strahl gegenüber senkrecht zur x-Richtung geneigt ist, [mm] \beta= [/mm] Winkel y_Richtung entsprechend. z=0 auf dem Bildschirm
Wenn du erst mal [mm] \beta=0 [/mm] ansiehst, ist y=y' [mm] x'=x+z*tan\alpha. \alpha [/mm] kann dabei pos oder negativ sein, je nachdem ob der Winkel nach rechts + oder nach links - zeigt. Das kannst du leicht zeichnen, indem du einen Schnitt durch deine Zeichnung legst, der parallel zur x-z Ebene geht.
Dasselbe für [mm] \alpha=0 [/mm] x'=x, [mm] y'=y+tan\beta
[/mm]
und wenn gegen beide Richtungen gedreht ist : [mm] x'=x+z*tan\alpha. y'=y+tan\beta.
[/mm]
Wenn du von einem Punkt aus projizierst, wählst du ihn am besten bei (0,0,a) mit [mm] a>z_{max}. [/mm] D.h. nur das Projektionszentrum soll ausserhalb des Körpers liegen, den ich abbilde.
Dann kannst du wieder die 2 Richtungen durch Schnitte einzeln zeichnen, und mit den Strahlensätzen eigentlich alles sehen. es gilt x'/x=a/(a-z), entsprechend y'/y=a/(a-z)
Wenn das Projektionszentrum um b in xRichtung verschoben ist (x'-b)/(x-b)=a/(a-z) entsprechendes für y-Richtung.
Wenn du's wirklich verstehen willst, zeichne dir immer Schnitte, in der deine Strahlen liegen, dann wird alles doch sehr einfach!
Noch ne Frage? zu was brauchst du das? Für ein Programm?
Gruss leduart
|
|
|
|
|
Ja, es soll für ein Programm sein-aber erstmal muss ich es verstehen (das Problem ist das ich es noch nicht für Mathematik gelehr bekomme, es aber Jetzt in der Programmierung brauche - weshalb ich warscheinlich ziemlich dumm frage).
[Externes Bild http://ypsilondownloads.de/diagram3.png]
Es wär super wenn du es mir erklären könntest wie es Funktioniert wenn ich die Winkel $ [mm] \alpha, \beta, \gamma [/mm] $ oder eventuell die von mir verwendeten Werte nehmen würdest - $ [mm] R_{x}, R_{y}, R_{z} [/mm] $ - weil es sonst ziemlich verwirrend ist.
(x'-b)/(x-b)=a/(a-z) hatte ich in Px' = (Rx/(Rx-Pz)*(Px-Ry)+Ry) , also
x' = (a/(a-z)*(x-b)+b) aufgelöst - aber a schien da nichtmehr ein Winkel zu sein? - es kam nichts vernüftiges raus..
$ [mm] x'=x+z\cdot{}tan\alpha. y'=y+tan\beta. [/mm] $ (ich glaube du meintest:
$ x'= x + z [mm] \cdot \tan(\alpha) [/mm] $
$ y'= y + z [mm] \cdot \tan(\beta) [/mm] $) funktionierte - zumidest stellte es eine Parralelprojektion dar.)
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 12:48 Do 12.05.2005 | Autor: | leduart |
> Es wär super wenn du es mir erklären könntest wie es
> Funktioniert wenn ich die Winkel [mm]\alpha, \beta, \gamma[/mm]
> oder eventuell die von mir verwendeten Werte nehmen würdest
> - [mm]R_{x}, R_{y}, R_{z}[/mm] - weil es sonst ziemlich verwirrend
> ist.
> (x'-b)/(x-b)=a/(a-z) hatte ich in Px' =
> (Rx/(Rx-Pz)*(Px-Ry)+Ry) , also
> x' = (a/(a-z)*(x-b)+b) aufgelöst - aber a schien da
> nichtmehr ein Winkel zu sein? - es kam nichts vernüftiges
> raus..
Hast du dir mal ne Schnittzeichnung gemacht?
Bei Zentralprojektion weiß ich nicht, was du mit dem Winkel meinst. Die Strahlen gehen von einem Punkt aus, treffen die Punkte des Gegenstandes und gehen weiter zur Projrktionsebene. Der Durchstoßpunkt ist der Bildpunkt.
Andere Vorstellung: die Strahlen gehen von den Pkt, des Gegenstandes aus und laufen auf einen Punkt zu. Auf dem Weg treffen sie die Projektionsebene. ( Dabei ist der Projektionspunkt sozusagen das Auge)
Aber jeder Strahl hat einen anderen Winkel zur Projektionsebene. die Winkel sind bestimmt durch die Lage des Projektionspunktes.
Deine Zeichnung versteh ich gar nicht!
es sieht aus wie eine Parallelprojektion auf die Ebene z=0. Aber du hast einen "Zentralpunkt" (0,0,0) angegeben, der in der Projektionsebene liegt. Was soll der darstellen? Wenn ich [mm] R_{x} [/mm] richtig verstehe ist das der Winkel der Parallelprojektion zur x-Richtung, wenn der 0 ist wird nicht mehr auf z=0 projiziert, wenn er 90° ist und [mm] R_{y} [/mm] auch ist es eine senkrechte Projektion. mit meinen Winkeln wäre [mm] dann\alpha=(90°-R_{x}) [/mm] oder statt [mm] tan(\alpha) [/mm] musst du [mm] cotan(R_{x}) [/mm] nehmen.
Ich hab auch deutlich gesagt, dass ich mit a den Abstand des Projektionszentrums von der Bildebene meine, sicher keinen Winkel!
Wenn du also Klarheit in mir über dein Bild erzeugst, kann ich dir helfen. Dazu dient auch wenn du genau sagst, was dein Prgramm tun soll, ist es ne Schulaufgabe oder Hobby? willst du's verstehen oder nur fertige Formeln? Wenn du's verstehen willst, MUSST du Schnittzeichnungen machen, dann ist alles einfache Schulmathematik, Strahlensatz und Rechnungen am rechtwinkligen Dreieck!
Dabei hilft es, den Tisch als Projektionsebene zu nehmen, einen Bleisift als Projektionsstrahl!
Wenn du wieder Bilder schickst lad sie unter Dateianhang hoch, und beschrifte sie besser also hier an die Achsen x,y,z schreiben, Winkel die du meinst an deinem Strahl eintragen, 2 verschiedene Pkte projizieren damit man zw. Zentral- und Parallelprojektion unterscheiden kann. Besondere Punkte oder Ebenen farblich markieren etc.
Gruss leduart
|
|
|
|
|
[Externes Bild http://ypsilondownloads.de/diagram7.png]
Ich hatte es gestern geschafft eine Zentralprojektion mittels Augpunkt zu erstellen - und heute auch noch eine Drehung mittels einer Ziemlich ähnlichen Formel wie Deiner zu erstellen:
http://ypsilondownloads.de/asciiiii.htm - JavaScript
http://ypsilondownloads.de/ZoAProject - Applet
Mir Fehlt nur noch eins - ich möchte irgendwie die Helligkeit von Flächen berechnen - keine Ahnung wie ich das machen könnte...
|
|
|
|
|
Hallo,
> [mm]\left( {\overrightarrow x \; - \;\overrightarrow q } \right)\;\overrightarrow n \; = \;0[/mm]
> verstehe ich nicht so richtig - was stellen die Vektoren
> [mm]\overrightarrow q \;[/mm] und [mm]\overrightarrow n \;[/mm] dar und, wie
> binde ich die Winkel des Graphen zur Ebene ein?
[mm]\overrightarrow q \;[/mm] ist ein Punkt auf der Ebene.
[mm]\overrightarrow n \;[/mm] ist ein Vektor der senkrecht auf der Ebene steht.
Gruß
MathePower
|
|
|
|