我有参数a
、b
和的值P
。形状或表面S
与它们的关系如下。
S = P (1- x^2/a^2 - y^2/b^2)^0.5
在图形生成过程中,我还想将比例的最小值设为-a
,-b
将最大值设为。a
b
这是该问题的 MWE,其中给出了a=1.777
、b=0.228
和的值P=1.642
。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{
compat=1.3,
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={a},
ylabel={b},
colormap/jet
]
\addplot3[surf]
{1.642 * (1 - x^2/1.777^2 -y^2/0.228^2)^0.5};
\end{axis}
\end{tikzpicture}
\end{document}
但是,它给出的只是一个带有轴的空白图形。该如何修复它?
答案1
pgfplots
无法处理复数。您可以声明一个新函数realsqrt
,该函数仅取平方根的实部,并对复数参数返回 0。
为了摆脱蓝色基地,z=0
可以使用
\addplot3[point meta={z<=0 ? nan : z},...]
但随后,人们必须加大对善恶的采样,以消除锯齿状的边界。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[
declare function={realsqrt(\x) = ifthenelse(\x<0,0,sqrt(\x));}
]
\begin{axis}[
domain=-2:2,
y domain=-.3:.3,
xlabel={a},
ylabel={b},
colormap/jet,
samples=41,
]
\addplot3[surf,shader=interp]
{1.642 * realsqrt(1 - x^2/1.777^2 - y^2/0.228^2)};
\end{axis}
\end{tikzpicture}
\end{document}