Ich versuche, einehelikoidund um den Bereich unterhalb der Kurve auszufüllen. Da der Zweck der Abbildung nur darin besteht, „eine Vorstellung zu vermitteln“, würde ich es lieber einfach halten und die Verwendung von PGFplots
und vermeiden GNUplot
– mit denen ich nicht vertraut bin.
Unter Bezugnahme auf das MWE unten habe ich die Kurve und die Schattierung gezeichnet, aber letztere scheint für negative Werte von x
, also die horizontale Richtung, nicht richtig zu sein. Daher frage ich, wie man es richtig machen kann.
Außerdem möchte ich Linien zeichnen, die von der Achse des Helikoids ausgehen, also der z
Achse im TikZ-Koordinatensystem, bis zum entsprechenden Punkt auf dem Helikoid selbst. Der Codeabschnitt, den ich auskommentiert habe, sollte diesem Zweck dienen, funktioniert aber in seiner jetzigen Form nicht.
Kann mir jemand helfen?
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\draw [name path=E-wave] [red,thick,->] plot [domain=0:13,samples=100] ({sin(\x r)},{cos(\x r)},\x);
\fill [red,fill opacity=0.2] (0,0,0) -- plot [domain=0:13,samples=100] ({sin(\x r)},{cos(\x r)},\x) -- (0,0,13) -- cycle;
%\foreach [evaluate={\xpos=1.1*sin(\zpos*180/pi);\ypos=1.1*cos(\zpos*180/pi);}] \zpos in {0,0.25*pi,...,4*pi} {
% \path [name path=mgntd] (0,0,\zpos) -- (\xpos,\ypos,\zpos);
% \draw [name intersections={of=E-wave and mgntd,by={isect\zpos}}] (0,0,\zpos) -- (isect\zpos);
%}
\draw [->] (0,0,0) -- (0,0,14.5);
\end{tikzpicture}
\end{document}
Antwort1
Das Hauptproblem war, dass der Schritt zu klein war, um von der intersections
Bibliothek erkannt zu werden (einige Ideen finden Sie im Kommentarbereich). Wir mussten auch einen Koeffizienten korrigieren, um 1.1
die Pfeilspitzen wieder auf die Kurve zu bringen. Das vorgestellte Layout ähnelt in gewisser Weise diesem hier.https://i.stack.imgur.com/mcmob.png.
%! *latex mal-helicoid.tex
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{tikz}
\usetikzlibrary{intersections}
\pagecolor{white}
\begin{document}
\tikzset{malstyle/.style={->,>=stealth, line width=0.2pt},
malarrow/.style={->, >=stealth}}
\begin{tikzpicture}
% The curve drawing and filling...
\draw [name path=Ewave] [red, thick, ->, fill, fill opacity=0.2] (0,0,0) -- plot [domain=0:12.5664, samples=100] ({sin(\x r)}, {cos(\x r)}, \x) -- (0,0,12.5664) --cycle;
%\fill [red, fill opacity=0.2] (0,0,0) -- plot [domain=0:12.5664, samples=100] ({sin(\x r)},{cos(\x r)},\x) -- (0,0,12.5664) -- cycle;
% Adding all kind of arrows...
\foreach [ evaluate={\xpos=sin(\zpos*180/pi); \ypos=cos(\zpos*180/pi);} ]
\zpos in {0, 0.2618, ..., 12.5664}
{% Beginning of \foreach...
\draw[malstyle, black] (0,0,\zpos) -- (\xpos, \ypos, \zpos);
\draw[malstyle, black!40] (0,0,0) -- (\xpos, \ypos, 0);
\draw[malstyle, green] (0,0,\zpos) -- (\xpos, 0, \zpos);
\draw[malstyle, blue] (0,0,\zpos) -- (0, \ypos, \zpos);
}% End of \foreach...
% Drawing the axis... (positive and negative values)
% positive
\draw [malarrow] (0,0,0) -- (0,0,14.5) node[xshift=5, yshift=15] {$z$};
\draw [malarrow] (0,0,0) -- (0,2,0) node[xshift=-5, yshift=-10] {$y$};
\draw [malarrow] (0,0,0) -- (2,0,0) node[xshift=-10, yshift=-5] {$x$};
% negative
\draw[dashed] (0,0,0)--(-2,0,0) (0,0,0)--(0,-2,0) (0,0,0)--(0,0,-4);
\end{tikzpicture}
\end{document}
Antwort2
Wenn Sie es einfach halten möchten, verwenden Sie eine 2D-Darstellung (Zykloide). Führen Sie das Beispiel mitxelatex
\documentclass[pstricks]{standalone}
\usepackage{pst-plot,pst-math}
\def\rA{1} \def\rB{2} \def\Fr{1.25 }
\begin{document}
\begin{pspicture}(-2,-2)(13,12)
\rput{45}(0,0){%
\psparametricplot[algebraic,plotpoints=1000,fillstyle=solid,
fillcolor=red!40!white!80,linecolor=red]%
{0.25 ACOS \Fr div}{0.25 ACOS \Fr div Pi 4.13 mul add}%
{\rA*t-\rB*sin(t*\Fr) | -\rA+\rB*cos(t*\Fr)+0.5}
\psparametricplot[algebraic,plotpoints=1000,linecolor=red,
arrows=<-,arrowscale=2.5]%
{0.5}{14.5}{\rA*t-\rB*sin(t*\Fr) | -\rA+\rB*cos(t*\Fr)+0.5}
\psline(-1.5,0)(16.5,0)}
\end{pspicture}
\end{document}