
У меня есть два 3D графика, один в полярных координатах, другой параметрический. Я хотел бы иметь на том же графике и контуры. Вот текущие графики:
\begin{tikzpicture}
\begin{axis}[view={130}{30}]
\addplot3 [surf,z buffer=sort,samples=30,domain=0:360,y domain=0:5, data cs=polar] (x,y,y^2);
\addplot3 [contour gnuplot={contour dir=y,draw color=red,labels=false},y filter/.expression={5},] {x^2};
\addplot3 [contour gnuplot={contour dir=x,draw color=blue,labels=false},x filter/.expression={5},] {y^2};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[view={130}{30}]
\addplot3[surf,domain=-1:1,y domain=0:360,z buffer=sort] ({cosh(x)*cos(y)}, {cosh(x)*sin(y)}, {sinh(x)});
\end{axis}
\end{tikzpicture}
Теперь у меня вопрос: как я могу автоматически построить контуры обоих графиков, поскольку они определены через полярные координаты или параметры? Контуры x
и y
параболоида просто жестко закодированы.
Я ищу (если есть) способ автоматически создавать контуры, не заботясь о том, какие координаты он использует. Что-то вроде примера на странице 156здесь
Мне тоже удалось получить что-то вроде этого
добавив следующую строку:
\addplot3 [contour gnuplot={contour dir=z,draw color=black,labels=false},z filter/.expression={25},] {y^2+x^2};
но решение не кажется оптимальным, так как мне нужно вручную знать раздел. Есть ли способ этого добиться?
Редактирование 1: Возможно, мне следует прояснить свою потребность. Предположим, у меня есть функция f
, которую я хочу построить. Я могу использовать ее декартову формулу, некоторую параметризацию или использовать полярные координаты. В любом случае должен быть достигнут тот же результат. В первом случае нахождение контуров с помощью contour gnuplot
довольно просто, и мне просто нужно ввести исходную функцию.
Если у меня есть f
параметрическая форма или та, которая использует полярные координаты, мне уже нужно знать уравнения контуров, чтобы построить их. Есть ли способ обобщить задачу, чтобы для любого заданного, f
записанного в любой форме, я мог построить контуры?
По сути, я хотел бы получить проекцию функции f
на ось и построить ее контур.