我有这个代码来绘制椭圆体,但我希望能够将其翻译成中心在(3,3,3)。现在我还不确定如何,因为它似乎工作正常,但一旦我改变长度,宽度和高度结果很奇怪。 下面是length=3
、width=2
和 的结果height=1
:
这是我的代码翻译后但没有缩放(很大程度上受到以下启发:绘制椭圆体)
\documentclass{article}
\usepackage{pgfplots}
\usepackage{float}
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\def\translatex{3}
\def\translatey{3}
\def\translatez{3}
\def\length{1}
\def\width{1}
\def\height{1}
\begin{axis} [view={135}{20},colormap/redyellow,
axis lines=center, axis on top,ticks=none,
set layers=default,axis equal,
xlabel={$x$}, ylabel={$y$}, zlabel={$z$},
xlabel style={anchor=south east},
ylabel style={anchor=south west},
zlabel style={anchor=south west},
enlargelimits,
tick align=inside,
domain=0:10,
y domain=0:10,
samples=20,
z buffer=sort,
]
\addplot3 [surf,opacity=0.4,domain=-1:0,
domain y=0:360] ({\translatex+\length*sin(y)*sqrt(1-x^2)},{\translatey+\width*cos(y)*sqrt(1-x^2)},{\translatez+\height*x});
\addplot3 [surf,opacity=0.4,domain=0:1,
domain y=0:360,on layer=axis foreground] ({\translatex+\length*sin(y)*sqrt(1-x^2)},{\translatey+\width*cos(y)*sqrt(1-x^2)},{\translatez+\height*x});
\end{axis}
\end{tikzpicture}
\caption{Tilføj navn 2}
\label{fig:tilføj_navn_2}
\end{figure}
\end{document}
现在它显示如下内容:
答案1
我不知道你说的“奇怪”是什么意思。轴在 处没有完全相交(0,0,0)
,但我怀疑你看不出来。要纠正它,你需要设置例如 z 比例。
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\translatex}{3}
\pgfmathsetmacro{\translatey}{3}
\pgfmathsetmacro{\translatez}{3}
\pgfmathsetmacro{\length}{3}
\pgfmathsetmacro{\width}{2}
\pgfmathsetmacro{\height}{1}
\begin{axis}[
view={135}{22},
zmin=0, zmax=5,
colormap/redyellow,
axis lines=center, axis on top, axis equal, ticks=none,
xlabel={$x$}, ylabel={$y$}, zlabel={$z$},
xlabel style={anchor=south east}, ylabel style={anchor=south west}, zlabel style={anchor=south west},
]
\addplot3[
surf, opacity=0.4,
domain=-1:1, samples=40,
y domain=0:360, samples y=20,
z buffer=sort,
] ({\translatex+\length*sin(y)*sqrt(1-x^2)},{\translatey+\width*cos(y)*sqrt(1-x^2)},{\translatez+\height*x});
\end{axis}
\end{tikzpicture}
\end{document}
你可以选择画一些帮助线
\draw[dashed] (3,0,0) -- (3,3,0) (0,3,0) -- (3,3,0) (3,3,0) -- (3,3,3);
或者选择更好的视角
view={110}{20},
不带opacity
和axis on top
: