Как нарисовать z-простой параболоид «чистым» способом

Как нарисовать z-простой параболоид «чистым» способом

Я хотел бы рисовать z=x^2+y^2на интервале 0<z<9. Поэтому обычно я просто использую pgfplotsкоманду addplot3, и для прямоугольных областей это, кажется, не вызывает особых проблем. Пример (изЕсть ли простой способ нарисовать линейчатую поверхность типа гиперболического параболоида в TikZ?):

введите описание изображения здесь

В моем случае, однако, я хотел бы нарисовать параболоид и хотел бы, чтобы край кривой был r=3в z=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}

Связанный контент