改变视角会使用 pgfplots 扭曲球体

改变视角会使用 pgfplots 扭曲球体

我正在尝试pgfplots通过绘制简单的东西(例如二维球体)来学习如何使用。但是,我发现相当令人惊讶的是,根据视角的不同,结果有时看起来根本不像球体。除非我遗漏了什么,否则无论我们从哪个方向看,球体都应该是相同的。

这是我的示例代码:

\documentclass[a4paper,landscape]{article}

\usepackage{tikz}
\usepackage{pgfplots}

\pgfplotsset{width=6cm}

\newcommand{\degree}{\ensuremath{^\circ}}
\newcommand{\plotsphere}[2]{
\begin{axis}[view={#2}{#1},axis equal,title={$\theta=#1\degree,\quad \phi=#2\degree$}]
\addplot3[surf,shader=flat,z buffer=sort,
samples=20,domain=-1:1,y domain=0:2*pi]
({sqrt(1-x^2) * cos(deg(y))},
{sqrt( 1-x^2 ) * sin(deg(y))},
x);
\end{axis}
}

\begin{document}
\pagestyle{empty}
\begin{figure}
\begin{tikzpicture}[scale = 0.75]
\foreach \x/\polangle in {-8/20,0/45,8/70}
    \foreach \y / \azangle in {-8/20,0/45,8/70}
        \node at (\x,\y) {\plotsphere{\polangle}{\azangle}};
\end{tikzpicture}
\end{figure}
\end{document}

结果:

在此处输入图片描述

我唯一满意的版本是view={45}{45}。所有其他版本都显得扭曲了。似乎这种扭曲不是由于我使用了 选项而导致的,因为轴上的长度单位不同axis equal。我是不是忘记了什么重要的参数?

答案1

正如 Luigi 正确指出的那样,这是一个错误,已在 1.6 版本中修复。

因此,更新将解决您的问题。为了记录,请尝试查看下图中 axis equal和之间的区别。axis equal image

无轴缩放

当然这里的缩放是错误的。

在此处输入图片描述

axis equal选项

这里的缩放比例是正确的.它将缩放轴范围,以便保持指定的宽度和高度(即<axis>min<axis>max受到缩放)。因此,你会看到它有趋势充满如果没有正确的间距,则会出现很多空白(请注意\theta=45)。

在此处输入图片描述

axis equal image选项

缩放也是正确的这里。然而,这里<axis>min<axis>max不是缩放参数。相反,图像的宽度和高度与找到的长度相匹配<axis>min<axis>max因此图像大小将不是即便已指定,也应予以保留。

在此处输入图片描述

相关内容