PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pst-solides3d und beamer



Marian
07-03-2011, 09:41
Hallo!

Bei der Vorbereitung meiner Vorlesung habe ich gewisse Schwierigkeiten gemerkt, die ich nicht lösen kann.

Ich benutze TeXLive 2010 und die beamer-Klasse, Version 3.10 zusammen mit pst-solides3d, Version 4.19. Der Code ist



\documentclass[dvips,notes=hid,xcolor=dvipsnames]{beamer}
%
%
%----------------- beamer
\usetheme{Warsaw}
\setbeamertemplate{blocks}[rounded][shadow=true]
\setbeamertemplate{navigation symbols}{}
\usecolortheme[named=RoyalBlue]{structure}
%
%
%----------------- pstricks
\usepackage{pstricks}
\usepackage{pst-plot}
\usepackage{pstricks-add}
\usepackage{pst-grad}
\usepackage{pst-solides3d}
%
%----------------- Tschechische Sprace
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
%----------------- math packages
\usepackage{amsmath,amsfonts,amssymb}
%-----------------
\title{}
\author{}
\date{}
\begin{document}
\begin{frame}[t]
\frametitle{Die Überschrift}
\begin{center}
\psset{unit=.65,viewpoint=40 30 22 rtp2xyz,lightsrc=viewpoint}
\begin{pspicture}(-1,-2.8)(3,7)
\psPoint(4,3,5){A}
\psPoint(4,3,0){Axy}
\psPoint(4,0,0){Ax}
\psPoint(0,3,0){Ay}
\psPoint(0,0,5){Az}
%------------------
\psSolid[object=grille,base=0 5 0 5,linecolor=lightgray!50,linewidth=.3pt,RotY=90](0,0,5)
\psSolid[object=grille,base=0 6 0 5,linecolor=lightgray!50,linewidth=.3pt,RotX=-90](0,0,5)
\psSolid[object=grille,base=0 6 0 5,linecolor=lightgray!50,linewidth=.3pt]
%------------------
\axesIIID[linewidth=.5pt](0,0,0)(6.5,5.5,5.5)
%================
\uncover<3->{%
\psline[linecolor=black!60,linewidth=.5pt](Axy)(A)}%
%================
\uncover<2->{%
\psSurface[ngrid=.2 .2,linewidth=.3pt,spotX=r,spotY=d,spotZ=l,hue=.3 .8]%
(1,0)(6,5){x 4 sub dup mul y 3 sub dup mul add 5 div neg 5 add}}%
%================
\uncover<3->{%
\psline[linecolor=black!60,linestyle=dashed,linewidth=.4pt](A)(Axy)}%
%================
\uncover<4->{%
\psline[linecolor=black!60,linewidth=.4pt](Ax)(Axy)
\psline[linecolor=black!60,linewidth=.4pt](Ay)(Axy)
%\psline[linecolor=red,linestyle=dashed,linewidth=.5pt](A)(Az)
\uput[160](Ax){$x_0$}
\uput[70](Ay){$y_0$}
\uput[-20](Axy){{\small ${\color{red}A_0}$}}}%
%================
\uncover<3->{%
\psdot[linecolor=red,linewidth=.8pt](A)%
\psdot[linecolor=red,linewidth=.2pt](Axy)}%
%================
% \uncover<5->{%
% \defFunction{funkce}(t){t Cos 4 add}{t Sin 3 add}{0}
% \defFunction{projection}(t){t Cos 4 add}{t Sin 3 add}{t Cos 4 add 4 sub dup mul t Sin 3 add 3 sub dup mul add 5 div neg 5 add}
\psSolid[%
object=courbe,%
linewidth=.4pt,%
r=0,range=Pi neg Pi,%
linecolor=blue,%
function=funkce]}%
%================
\uncover<6->{%
\psSolid[%
object=courbe,%
linewidth=.3pt,%
r=0,range=-1.9 2.7,%
linecolor=green!80!black,%
function=projection]}%
%================
\end{pspicture}
\end{center}
\end{frame}
\end{document}


Dieser Code funktioniert auf die Weise, die ich auch erwarte, wenn man im obigen Code den abschließenden Teil mit \uncover<5-> und \uncover<6-> wegschafft. In dem Falle arbeitet alles richtig und ich bin imstande, die Grafik stückeweise zu entdecken.

Aber, mit dem abschließenden Teil <5-> und <6-> gibt es Probleme, und das stückweise Entdecken funktioniert nicht.

Hier brauche ich Hilfe. Was soll ich tun, damit alles im Code klappt und das Ergebnis stückeweise entdeckt wird, wie man erwarten würde?


Und außerdem habe ich noch eine Frage, die mit dem obigen Code zusammenhängt. Wie kann man mit pst-solides3d eine gestrichelte 3D-Kurve zeichnen?

Ich habe das Problem (meiner Ansicht nach) ganz unnatürlich gelöst, und bin mit solcher Lösung nicht zufrieden. Mehr detailiert, den Teil im obigen Code mit <6-> habe ich durch



\multido{\r=1+.2}{10}{%
\psSolid[%
object=courbe,%
linewidth=.4pt,%
r=0,range=\r\space \r\space .1 add,%
linecolor=green,%
function=projection]}


ersetzt. Es würde mich sehr interessieren, ob dieses auf eine mehr natürliche Weise (statt \multido) gelöst werden könnte.



Danke im voraus!

voss
07-03-2011, 13:23
Bei der Vorbereitung meiner Vorlesung habe ich gewisse Schwierigkeiten gemerkt, die ich nicht lösen kann.

Ich benutze TeXLive 2010 und die beamer-Klasse, Version 3.10 zusammen mit pst-solides3d, Version 4.19. Der Code ist


Wenn ich dein Beispiel erst mal lauffähig mache, habe ich kein Problem. Wobei ich mich wieder mal gefragt habe, warum es nicht möglich ist, dass der Fragende nicht sein Beispiel mal selbst ausprobieren kann, bevor er es hier einstellt ...

Herbert

Marian
07-03-2011, 20:39
Wenn ich dein Beispiel erst mal lauffähig mache, habe ich kein Problem. Wobei ich mich wieder mal gefragt habe, warum es nicht möglich ist, dass der Fragende nicht sein Beispiel mal selbst ausprobieren kann, bevor er es hier einstellt ...

Herbert


Sehr geehrter Herr Voß.

Danke dafür, dass Sie mich aufmerksam darauf gemacht haben, dass etwas nicht stimmt. In meinem Code gibt es natürlich Fehler (%-Zeichen im Schritt <5->) und dieser Code kann deshalb nicht funktionieren. Dafür wollte ich mich (allen interessierten) entschuldigen. Leider habe ich aus Versehen eine schlechte Datei gewählt, was keine Absicht war.

Das Problem aber dauert ständig. Dieses mal habe ich hoffentlich alles sorgfältiger gemacht und auch zwei txt-Dateien mit dem Code angehängt (das pdf-Resultat ist in beiden Fällen größer als 100 kB, und so könnte ich es nicht anhängen).

Meine Frage ist, was stimmt im Code mrunix_2.txt nicht und wie könnte ich meinen Code verbessern, damit das stückweise Entdecken der graphischen Elemente (pdf) mit der Nummerierung der einzelnen Schritte (txt) im Einklang wäre?

Vielleicht sehe ich den Wald vor lauter Bäumen nicht, aber leider kenne ich keine vernünftige Antwort zu diesem Problem (dies betrifft den Code mrunix_2.txt).

Und als früher wollte ich mich noch fragen, ob es einen natürlichen Weg gibt, wie man eine gestrichelte 3D-Kurve mit der Hilfe von pst-solides3d zeichnen kann (nicht unbedingt so einfach wie [linestyle=dashed]).

Zum Übersetzen der tex-Dateien benutze ich:

=====================
latex file.tex
dvips -Ppdf -o file.ps file.dvi
ps2pdf file.ps
=====================


Für jede Hilfe bin ich dankbar!

voss
08-03-2011, 07:50
Meine Frage ist, was stimmt im Code mrunix_2.txt nicht und wie könnte ich meinen Code verbessern, damit das stückweise Entdecken der graphischen Elemente (pdf) mit der Nummerierung der einzelnen Schritte (txt) im Einklang wäre?

Vielleicht sehe ich den Wald vor lauter Bäumen nicht, aber leider kenne ich keine vernünftige Antwort zu diesem Problem (dies betrifft den Code mrunix_2.txt).

Und als früher wollte ich mich noch fragen, ob es einen natürlichen Weg gibt, wie man eine gestrichelte 3D-Kurve mit der Hilfe von pst-solides3d zeichnen kann (nicht unbedingt so einfach wie [linestyle=dashed]).


Hier ein funktionierendes Beispiel für das erste Problem. Nach der gestrichelten 3D-Linie sehe ich, sobald ich Zeit habe.


\documentclass[dvips,notes=hid,xcolor=dvipsnames]{beamer}
\usetheme{Warsaw}
\setbeamertemplate{blocks}[rounded][shadow=true]
\setbeamertemplate{navigation symbols}{}
\usecolortheme[named=RoyalBlue]{structure}
\usepackage{pst-solides3d}

\begin{document}

\begin{frame}[t,fragile]
\frametitle{Die Überschrift}
\begin{center}
\psset{unit=.65,viewpoint=40 30 22 rtp2xyz,lightsrc=viewpoint}
\begin{pspicture}(-1,-2.8)(3,7)
\psPoint(4,3,5){A} \psPoint(4,3,0){Axy}
\psPoint(4,0,0){Ax}\psPoint(0,3,0){Ay}
\psPoint(0,0,5){Az}
\psSolid[object=grille,base=0 5 0 5,linecolor=lightgray!50,linewidth=.3pt,RotY=90](0,0,5)
\psSolid[object=grille,base=0 6 0 5,linecolor=lightgray!50,linewidth=.3pt,RotX=-90](0,0,5)
\psSolid[object=grille,base=0 6 0 5,linecolor=lightgray!50,linewidth=.3pt]
\axesIIID[linewidth=.5pt](0,0,0)(6.5,5.5,5.5)
\only<3->{\psline[linecolor=black!60,linewidth=.5pt](Axy)(A)}
\only<2->{%
\psSurface[ngrid=.2 .2,linewidth=.3pt,
spotX=r,spotY=d,spotZ=l,hue=.3 .8,algebraic](1,0)(6,5){5-((x-4)^2+(y-3)^2)/5}}
\only<3->{\psline[linecolor=black!60,linestyle=dashed,linewidth=.4pt](A)(Axy)}
\only<4->{%
\psline[linecolor=black!60,linewidth=.4pt](Ax)(Axy)
\psline[linecolor=black!60,linewidth=.4pt](Ay)(Axy)
%\psline[linecolor=red,linestyle=dashed,linewidth=.5pt](A)(Az)
\uput[160](Ax){$x_0$}\uput[70](Ay){$y_0$}\uput[-20](Axy){{\small ${\color{red}A_0}$}}}%
\only<3->{%
\psdot[linecolor=red,linewidth=.8pt](A)
\psdot[linecolor=red,linewidth=.2pt](Axy)}
\only<5->{\defFunction[algebraic]{funkce}(t){cos(t)+4}{sin(t)+3}{0}
\psSolid[object=courbe,linewidth=.4pt,r=0,range=Pi neg Pi,linecolor=blue,function=funkce]}
\only<6->{\defFunction[algebraic]{projection}(t){cos(t)+4}{sin(t)+3}{5-((sin(t)^2)+(cos(t))^2)/5}
\psSolid[object=courbe,linewidth=.3pt,r=0,range=-1.9 2.7,
linecolor=green!80!black,function=projection]}
\end{pspicture}
\end{center}
\end{frame}
\end{document}


Herbert

Marian
10-03-2011, 13:58
Danke sehr!

Es funktioniert ...
:)