Eu tenho isto:
\begin{tikzpicture}
\begin{axis}[hide axis, unit vector ratio=1 1 1, view={-30}{45}]
\addplot3 [surf, domain=0:360, y domain=-1:1] ( {(10+y*cos(3*x/2)))*cos(x)}, {(10+y*cos(3*x/2)))*sin(x)}, {y*sin(3*x/2)});
\end{axis}
\end{tikzpicture}
Mas não funciona. Eu não sei o motivo. Gostaria de obter exatamente um destes:
Além disso, gostaria de desenhar uma garrafa de Klein simples (sem grade ou sombras), mas neste caso não tenho nada... :(
Obrigado pelo apoio!!
Responder1
Uma banda colorida de Moebius (com xelatex
:):
\documentclass[pstricks]{standalone}
\usepackage{pst-3dplot}
\makeatletter
\define@key[psset]{pst-3dplot}{HueBegin}{% Between 0 and 1
\def\PstHSB@HueBegin{#1}}
\define@key[psset]{pst-3dplot}{HueEnd}{% Between 0 and 1
\def\PstHSB@HueEnd{#1}}
\define@boolkey[psset]{pst-3dplot}[Pst@]{HSB}[true]{}
% Default values
\psset[pst-3dplot]{HueBegin=0,HueEnd=1,HSB=false}
\psset{dimen=outer}
\def\parametricPlotThreeD@iii{% without arrows (quickplot)
\addto@pscode{%
\psk@ThreeDplot@yPlotpoints {
/Counter 0 def
/t tMin def
xyz \@nameuse{beginqp@\psplotstyle}
/t t dt add def
\psk@ThreeDplot@xPlotpoints\space 1 sub {
xyz
/Counter Counter 1 add def
1 Counter eq { moveto currentpoint /OldY ED /OldX ED }
{\ifPst@HSB % Other points than the first one
/PointY exch def
/PointX exch def
Counter \psk@ThreeDplot@xPlotpoints\space div
\PstHSB@HueEnd\space
\PstHSB@HueBegin\space sub mul
\PstHSB@HueBegin\space add
1 1 sethsbcolor
OldX OldY PointX PointY lineto lineto
stroke
PointX PointY moveto
/OldX PointX def /OldY PointY def
\else lineto \fi } ifelse
/t t dt add def
} repeat
/t t dt sub def
/u u du add def
} repeat
}%
\@nameuse{endqp@\psplotstyle}%
}
\makeatother
\begin{document}
\psset{Beta=20}
\begin{pspicture}(-6,-3)(6,3)
\def\Radius{5 }
\parametricplotThreeD[plotstyle=line,xPlotpoints=100,
yPlotpoints=100,drawStyle=xyLines,HSB](0,365)(-1,1){
t 2 div cos u mul \Radius add t cos mul
t 2 div cos u mul \Radius add t sin mul
t 2 div sin u mul }
%\pstThreeDCoor[xMin=-1,yMin=-1,zMin=-1]
\parametricplotThreeD[plotstyle=line,xPlotpoints=100,yPlotpoints=1,
linecolor=black,linewidth=1.5pt](488,-60){
t 2 div cos \Radius add t cos mul
t 2 div cos \Radius add t sin mul
t 2 div sin }
\parametricplotThreeD[plotstyle=line,xPlotpoints=100,yPlotpoints=1,
linecolor=black,linewidth=1.5pt](631,513){
t 2 div cos \Radius add t cos mul
t 2 div cos \Radius add t sin mul
t 2 div sin }
\end{pspicture}
\end{document}
Responder2
Seu código funciona (IMHO).
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[declare function={moeb=3;phase=120;}]
\begin{axis}[hide axis, unit vector ratio=1 1 1, view={-30}{45}]
\addplot3 [surf, domain=0:360, y domain=-2:2,point
meta=rawy,shader=interp,samples=51,samples y=2] (
{(10+y*cos(moeb*x/2+phase)))*cos(x)}, {(10+y*cos(moeb*x/2+phase)))*sin(x)}, {y*sin(moeb*x/2+phase)});
\end{axis}
\end{tikzpicture}
\end{document}
Você pode mudar o enredo brincando com moeb
, phase
e point meta
.
Responder3
Não estou tentando dar uma resposta exata, mas ressalto que seu comentário em grade e cinza não é desejável, portanto, tomando seu exemplo de código encontrado neste site com alguns ajustes, obtemos isso, o que acho que é uma renderização razoável Isso ajuda muitas pessoas a compreender a natureza de um mobeius
Mas se você tentar remover a grade e a cor como fez, na melhor das hipóteses obterá um ponto.
Da mesma forma, há muitas respostas para garrafas neste site que você pode adaptar removendo os recursos que não deseja, mas remover as grades as torna menos compreensíveis.
Assim, você pode remover as etiquetas destehttps://tex.stackexchange.com/a/77643/170109
Fazendo uma garrafa Klein rotulada usando TikZ ou pgfplots? pgfplots em combinação com gnuplot requer ponto e vírgula adicional pgfplots exp(-pow(deg(x),2) no domínio 0:2*pi
Nota para quem está se perguntando onde conseguir uma peça de festa para servir vinho, consulte o fabricante deo maior do mundo