Estoy tratando de dibujar unhelicoidaly para llenar el área debajo de la curva. Dado que el objetivo de la figura es simplemente "dar una idea", preferiría mantenerlo simple y evitar el uso PGFplots
y GNUplot
, con el cual no estoy familiarizado.
Refiriéndose al MWE a continuación, dibujé la curva y el sombreado, pero este último no parece correcto para valores negativos de x
, es decir, la dirección horizontal. Por eso pregunto cómo solucionarlo.
Además, me gustaría dibujar líneas que comiencen desde el eje del helicoidal, es decir, el z
eje en el sistema de coordenadas TikZ, hasta el punto correspondiente del propio helicoidal. El fragmento de código que comenté debería servir para este propósito, pero no funciona como está ahora.
¿Alguien me puede ayudar?
\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}
Respuesta1
El principal problema fue que el paso era demasiado pequeño para ser reconocido por la intersections
biblioteca (algunas ideas están escritas en la sección de comentarios). También necesitábamos corregir un coeficiente de1.1
para que las puntas de flecha volvieran a aparecer en la curva. El diseño presentado es similar a este,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}
Respuesta2
Si desea mantenerlo simple, use una representación 2D (cicloide). Ejecute el ejemplo conxelatex
\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}