如何以「乾淨」的方式繪製 z 簡單拋物面

如何以「乾淨」的方式繪製 z 簡單拋物面

我想畫出z=x^2+y^2區間0<z<9。所以通常我只是使用pgfplots命令addplot3,對於矩形域,這似乎不會造成太多麻煩。範例(來自有沒有簡單的方法可以在 TikZ 中繪製像雙曲拋物面這樣的直紋曲面?):

在此輸入影像描述

然而,就我而言,我想繪製一個拋物面,並且希望曲線的邊緣位於平面r=3z=9。我的第一次嘗試是這樣的(改編自上一個問題):

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-3,ymin=-3,zmin=0,xmax=3,ymax=3,zmax=10]
\addplot3 [surf,draw=none,restrict z to domain=0:9] {x^2+y^2};
\end{axis}
\end{tikzpicture}
\end{document}

在此輸入影像描述

顯然,域導致了一個問題:拋物面根本打印不漂亮,因為最後計算的 z 值不在 處z=9,而是接近下面的某個位置z=9,每對坐標 (x,y) 都不同。

我可以設置samples y=300,但編譯時間會很瘋狂。此外,它限制了文檔的可能性,因為我消耗了大量的堆疊大小。

在此輸入影像描述

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-3,ymin=-3,zmin=0,xmax=3,ymax=3,zmax=10]
\addplot3 [surf,draw=none,restrict z to domain=0:9,samples y=300] {x^2+y^2};
\end{axis}
\end{tikzpicture}
\end{document}

當然有更好的方法來做到這一點嗎?

答案1

正如 percusse 在評論中所說,您可以使用極坐標:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-3,ymin=-3,zmin=0,xmax=3,ymax=3,zmax=10]
\addplot3 [surf,draw=none,restrict z to domain=0:9, data cs=polar, domain=0:360, y domain=0:3] (x, y, y^2);
\end{axis}
\end{tikzpicture}
\end{document}

相關內容