TikZ: So zeichnen Sie ein Helikoid und füllen den Bereich unter der Kurve

TikZ: So zeichnen Sie ein Helikoid und füllen den Bereich unter der Kurve

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 PGFplotsund 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 zAchse 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}

Bildbeschreibung hier eingeben

Antwort1

Das Hauptproblem war, dass der Schritt zu klein war, um von der intersectionsBibliothek erkannt zu werden (einige Ideen finden Sie im Kommentarbereich). Wir mussten auch einen Koeffizienten korrigieren, um 1.1die 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}

mwe, mein fünfter und hoffentlich letzter Versuch :-)

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}

Bildbeschreibung hier eingeben

verwandte Informationen