PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PSTRICKS - Ebene in einem 3D-KOS



W2K
30-11-2006, 19:49
Hallo,

ich habe eine Frage zu PSTRICKS. In dem nachfolgenden BSP habe ich ein Koordinatensystem gezeichnet, welches um die Winkel THETA, PHI gedreht wurde.
In das KOS möchte ich einen Text einfügen der senkrect auf der X-Achse steht (yz-Ebene). Die Darstellung sieht bei mir aber sehr fragwürdig aus. Außerdem passen die Abstände überhaupt nicht zu der Definition der Achsen.
Das soll heißen die 3 Ebenen Spannen jeweils eine Fläche von 40 x 40 auf. Soll nun der Text senkrecht auf der x-Achse stehen, mit einem x-Abstand von 40 zum Ursprung, würde ich die Parameter wie in dem unten angeführten BSp eingeben. Aber das klappt nicht.
Wo liegt mein Fehler?



\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[bmargin=2cm,tmargin=2cm]{geometry}
\usepackage{pst-3dplot,pst-gr3d,pst-grad,pst-vue3d,pstricks-add}

\begin{document}
\psset{unit=0.5cm, THETA=38, PHI=12, Dobs=100, Decran=10}
\begin{pspicture}(1.5, 0.0)(2.5,5)
\psset{linewidth=0.4mm}
\AxesThreeD{->}(45)
\QuadrillageThreeD[normaleLongitude=00, normaleLatitude=90, linewidth=0.15mm, grille=10](0,0,0)(-40, 0)(0, 40)
\QuadrillageThreeD[normaleLongitude=90, normaleLatitude=00, linewidth=0.08mm, grille=10](0,0,0)(0, -40)(40, 0)
\QuadrillageThreeD[normaleLongitude=00, normaleLatitude=00, linewidth=0.08mm, grille=10](0,0,0)(-40, -40)(0,0)


\psset{linestyle=none,fillstyle=transparent,transp alpha=0.2}
\pstPlanePut[plane=yz,pOrigin=lb](40,0,0){\fbox{LaTeX Text}}
\end{pspicture}

\end{document}

voss
30-11-2006, 21:00
Hallo,

ich habe eine Frage zu PSTRICKS. In dem nachfolgenden BSP habe ich ein Koordinatensystem gezeichnet, welches um die Winkel THETA, PHI gedreht wurde.
In das KOS möchte ich einen Text einfügen der senkrect auf der X-Achse steht (yz-Ebene). Die Darstellung sieht bei mir aber sehr fragwürdig aus. Außerdem passen die Abstände überhaupt nicht zu der Definition der Achsen.
Das soll heißen die 3 Ebenen Spannen jeweils eine Fläche von 40 x 40 auf. Soll nun der Text senkrecht auf der x-Achse stehen, mit einem x-Abstand von 40 zum Ursprung, würde ich die Parameter wie in dem unten angeführten BSp eingeben. Aber das klappt nicht.
Wo liegt mein Fehler?


du verwendest zwei Pakete, die nichts miteinander zu tun haben:
pst-vue3d -> Zentralprojektion
pst-3dplot -> Parallelprojektion

also entweder oder ...

Herbert

localghost
30-11-2006, 21:21
Das ist auch kein Wunder, denn in deinem Beispiel korrespondiert die Bildkomposition nicht mit den von dir gewählten Einheiten. Ich habe die Einheiten durch Löschen des unit-Keys im \psset-Befehl erstmal auf 1cm gesetzt (Voreinstellung).

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[bmargin=2cm,tmargin=2cm]{geometry}
\usepackage{pst-3dplot,pst-gr3d,pst-grad,pst-vue3d,pstricks-add}

\begin{document}
\psset{THETA=38,PHI=12,Dobs=100,Decran=10}
\begin{pspicture}(-5,-3)(6,6)
\psgrid[subgriddiv=1,griddots=10](-5,-3)(6,6)
\psset{linewidth=0.4mm}
\AxesThreeD{->}(45)
\QuadrillageThreeD[normaleLongitude=00, normaleLatitude=90, linewidth=0.15mm, grille=10](0,0,0)(-40,0)(0,40)
\QuadrillageThreeD[normaleLongitude=90, normaleLatitude=00, linewidth=0.08mm, grille=10](0,0,0)(0,-40)(40,0)
\QuadrillageThreeD[normaleLongitude=00, normaleLatitude=00, linewidth=0.08mm, grille=10](0,0,0)(-40,-40)(0,0)
\psset{linestyle=none,fillstyle=transparent,transp alpha=0.2}
\pstPlanePut[plane=yz,pOrigin=lb](4,0,0){\fbox{\LaTeX}}
\end{pspicture}
\end{document}
Bei der Komposition eines Bildes (mit PSTricks, pst-3dplot oder pst-vue3d) ist es immer hilfreich, ein (wenn auch 2D) Gitter zu generieren, damit man einen Überblick über Maße und Koordinatenursprung gewinnt. Als Ausmaße des Gitters sollte man die gleichen wählen wie bei der pspicture-Umgebung.

Wenn Du dir in deinem Beispielcode mal die Wahl deiner Einheiten anschaust (0.5cm) und dies mit den Koordinatenangaben (40,0,0) für die yz-Ebene mit dem Text vergleichst, wird sofort klar, dass dieses Objekt weit außerhalb des sichtbaren Bildbereichs liegt. Und dass die kleine yz-Ebene im Vergleich zum 3D-KOS etwas schräg ausfällt, mag daran liegen, dass der Befehl \pstPlanePut dem Paket pst-3dplot entnommen wurde. Die Befehle zur Generierung der "Wände" entstammen jedoch dem Paket pst-vue3d. Im Gegensatz zur Parallelprojektion, die durch pst-3dplot realisiert wird, erhält man mit pst-vue3d eine perspektivische Darstellung. Wenn Du also für die kleine yz-Ebene einen entsprechenden Befehl aus pst-vue3d findest, sieht das Ganze nicht mehr so krumm aus. Umgekehrt kannst Du dich auch auf Befehle beschränken, die durch das Paket pst-3dplot bereitgestellt werden. Dort gibt es auch Befehle zur Generierung der "Wände". Alles weitere findest Du in der Dokumentation zum Paket pst-3dplot (ftp://dante.ctan.org/tex-archive/help/Catalogue/entries/pst-3dplot.html).

Ich nehme mal an, du hast dieses Beispiel von irgendwo her übernommen und weißt gar nicht, welcher Befehl aus welchem Paket kommt. Für zukünftige Fragestellungen wäre es also angebracht, etwaige Bemerkungen in dieser Richtung dazu zu schreiben. Wenn Du dich nämlich mit den Paketen auskennst, kann ich mir dann die Erklärungen der Befehle sparen und mich auf das wesentliche konzentrieren.

Anmerkung: Überschneidung mit dem Beitrag von voss

W2K2005
01-12-2006, 10:41
Gibt es eine Alternative für \pstPlanePut, die ich verwenden sollte?

localghost
01-12-2006, 10:48
Ah, ein Doppelnick! Habe mir sowas schon gedacht. Wird das hier geduldet?

voss
01-12-2006, 21:05
Gibt es eine Alternative für \pstPlanePut, die ich verwenden sollte?

willst du denn überhaupt die zentrische Streckung haben?
Sonst kannst du doch alles aus pst-3dplot nehmen ...

Herbert