Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

21 Jul '14, 15:57

stefan's gravatar image

stefan
18.4k163148

Drehtransformation mit pgfplots

Ich versuche gerade, diesen Plot mit pgfplots zu generieren: ![Verwickelter Plot][1] Ich sah eine aufschlussreiche [Beschreibung auf Mathematica.SE][2] Mathematica SE][2] und gehe danach vor: zunächst den Querschnitt überlegen und dann drehen. Den Querschnitt gibt diese zweidimensionale Abbildung: \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \usepgfplotslibrary{polar} \begin{document} \begin{tikzpicture} \begin{polaraxis} \addplot[mark=none, domain=0:360, samples=100] {sin(3*x) + 1.25}; \end{polaraxis} \end{tikzpicture} \end{document} ![2D-Plot][3] Diese stelle ich nun dreidimensional dar. Ich fülle die Fläche zur besseren Sicht einmal, und der Einfachheit halber bette ich sie auf die xy-Ebene. Am Ende kann man immer noch den Viewpoint ändern. \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis} \addplot3 [domain=0:360, samples=60, fill=blue!30, opacity=0.8] ( {cos(x)*(sin(3*x) + 1.25)}, {sin(x)*(sin(3*x) + 1.25)}, 0 ); \end{axis} \end{tikzpicture} \end{document} ![3D-Plot][4] Die Transformation von polar auf kartesisch sieht man übrigens hier gut - das hatte ich zwischendurch als Stil für die Umrechnung (und alternativ `data cs=polar` als Option für den Plot): \pgfplotsset{ polar/.style = { x filter/.code = \pgfmathparse{cos(deg(rawx))*rawy}, y filter/.code = \pgfmathparse{sin(deg(rawx))*rawy} } } Jetzt brauchen wir "nur" noch diesen Plot (ohne fill, opacity) im Kreis zu drehen und dabei um seinen Mittelpunkt rotieren. Das erstere Drehen hat Jake [hier am Beispiel][5] um die z-Achse im Prinzip beschrieben durch Plotten von `({sin(x)*y},{cos(x)*y},{ <function of y> })`. Eine Mathematica-Version des Ganzen steht auf [Mathematica.SE][2], siehe evtl. auch [RotationTransform Referenz][6], falls obiges nicht genügt. Schafft jemand, das auf pgfplots zu adaptieren? [1]: http://texwelt.de/wissen/upfiles/twisted.png [2]: http://mathematica.stackexchange.com/questions/37698/how-to-plot-a-certain-surface-what-is-its-parametric-equation [3]: http://texwelt.de/wissen/upfiles/2d-plot.png [4]: http://texwelt.de/wissen/upfiles/3D-Plot.png [5]: http://tex.stackexchange.com/q/142152/213 [6]: http://reference.wolfram.com/language/ref/RotationTransform.html
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2
Link korrigiert

17 Jul '14, 23:23

stefan's gravatar image

stefan
18.4k163148

Drehtransformation mit pgfplots

Ich versuche gerade, diesen Plot mit pgfplots zu generieren: ![Verwickelter Plot][1] Ich sah eine aufschlussreiche [Beschreibung auf Mathematica.SE][2] und gehe danach vor: zunächst den Querschnitt überlegen und dann drehen. Den Querschnitt gibt diese zweidimensionale Abbildung: \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \usepgfplotslibrary{polar} \begin{document} \begin{tikzpicture} \begin{polaraxis} \addplot[mark=none, domain=0:360, samples=100] {sin(3*x) + 1.25}; \end{polaraxis} \end{tikzpicture} \end{document} ![2D-Plot][3] Diese stelle ich nun dreidimensional dar. Ich fülle die Fläche zur besseren Sicht einmal, und der Einfachheit halber bette ich sie auf die xy-Ebene. Am Ende kann man immer noch den Viewpoint ändern. \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis} \addplot3 [domain=0:360, samples=60, fill=blue!30, opacity=0.8] ( {cos(x)*(sin(3*x) + 1.25)}, {sin(x)*(sin(3*x) + 1.25)}, 0 ); \end{axis} \end{tikzpicture} \end{document} ![3D-Plot][4] Die Transformation von polar auf kartesisch sieht man übrigens hier gut - das hatte ich zwischendurch als Stil für die Umrechnung (und alternativ `data cs=polar` als Option für den Plot): \pgfplotsset{ polar/.style = { x filter/.code = \pgfmathparse{cos(deg(rawx))*rawy}, y filter/.code = \pgfmathparse{sin(deg(rawx))*rawy} } } Jetzt brauchen wir "nur" noch diesen Plot (ohne fill, opacity) im Kreis zu drehen und dabei um seinen Mittelpunkt rotieren. Das erstere Drehen hat Jake [hier am Beispiel][5] um die z-Achse im Prinzip beschrieben durch Plotten von `({sin(x)*y},{cos(x)*y},{ <function of y> })`. Eine Mathematica-Version des ganzen Ganzen steht auf [Mathematica.SE][6], [Mathematica.SE][2], siehe evtl. auch [RotationTransform Referenz][7], Referenz][6], falls obiges nicht genügt. Schafft jemand, das auf pgfplots zu adaptieren? [1]: http://texwelt.de/wissen/upfiles/twisted.png [2]: http://mathematica.stackexchange.com http://mathematica.stackexchange.com/questions/37698/how-to-plot-a-certain-surface-what-is-its-parametric-equation [3]: http://texwelt.de/wissen/upfiles/2d-plot.png [4]: http://texwelt.de/wissen/upfiles/3D-Plot.png [5]: http://tex.stackexchange.com/q/142152/213 [6]: http://mathematica.stackexchange.com [7]: http://reference.wolfram.com/language/ref/RotationTransform.html
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

17 Jul '14, 23:21

stefan's gravatar image

stefan
18.4k163148

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×