Estou tentando desenhar umhelicóidee preencher a área abaixo da curva. Como o objetivo da figura é apenas "dar uma ideia", prefiro mantê-la simples e evitar usar PGFplots
e GNUplot
- com os quais não estou familiarizado.
Referindo-me ao MWE abaixo, desenhei a curva e o sombreamento, mas este último não parece correto para valores negativos de x
, ou seja, a direção horizontal. Portanto, estou perguntando como consertar isso.
Além disso, gostaria de desenhar linhas a partir do eixo do helicóide, ou seja, o z
eixo no sistema de coordenadas TikZ, até o ponto correspondente no próprio helicóide. O trecho de código que comentei deveria servir a esse propósito, mas não funciona como está agora.
Alguém pode me ajudar?
\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}
Responder1
O principal problema era que a etapa era muito pequena para ser reconhecida pela intersections
biblioteca (algumas ideias estão escritas na seção de comentários). Também precisávamos corrigir um coeficiente para 1.1
colocar as pontas das setas de volta na curva. O layout apresentado é de certa forma semelhante 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}
Responder2
Se você quiser manter a simplicidade, use uma representação 2D (cicloide). Execute o exemplo comxelatex
\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}