![TikZ 的视角错误吗?](https://linux22.com/image/446953/TikZ%20%E7%9A%84%E8%A7%86%E8%A7%92%E9%94%99%E8%AF%AF%E5%90%97%EF%BC%9F.png)
视角看起来不对。发生了什么?
(此外,请随意评论任何可以改进的地方。)
\documentclass{standalone}
\usepackage{tikz}\usetikzlibrary{calc}
\pagecolor{darkgray}\color{white}
\begin{document}
\begin{tikzpicture}[
scale = 5,
rotate around y = 50,
dot/.style = {
fill, draw, circle,
inner sep = 0,
minimum size = 2pt,
}
]
\node [dot] (O) at (0, 0, 0) {};
\filldraw [
color = green,
fill opacity = 0.25,
]
(1,0,0) node [dot] (i) {} --
(0,1,0) node [dot] (j) {} --
(0,0,1) node [dot] (k) {} --
cycle;
\draw [->] (O) -- ($1.3*(i)$);
\draw [->] (O) -- ($1.3*(j)$);
\draw [->] (O) -- ($1.3*(k)$);
\end{tikzpicture}
\end{document}
这是一个带有旋转的版本30
。
目标是下面的目标。
答案1
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\pagecolor{darkgray}\color{white}
\begin{document}
\begin{tikzpicture}[
x={(5,1)}, y={(0,4.3)}, z={(0.3,-0.8)},
dot/.style = {
fill, draw, circle,
inner sep = 0,
minimum size = 2pt,
}
]
\node [dot] (O) at (0, 0, 0) {};
\filldraw [
color = green,
fill opacity = 0.25,
]
(1,0,0) node [dot] (i) {} --
(0,1,0) node [dot] (j) {} --
(0,0,1) node [dot] (k) {} --
cycle;
\draw [->] (O) -- ($1.3*(i)$);
\draw [->] (O) -- ($1.3*(j)$);
\draw [->] (O) -- ($1.3*(k)$);
\end{tikzpicture}
\end{document}
答案2
由于 OP 的问题已在评论中得到解答,我将为未来的用户编写一份摘要。
OP:TikZ 的视角是否错误?发生了什么?
@PaulGaborit:TikZ 使用等距投影……
从维基百科我们知道这是错误的。
[等轴测投影] 是一种轴测投影,其中三个坐标轴出现同样缩短其中任意两点之间的角度为120 度。
相反,TikZ 使用橱柜平行投影。 从维基百科我们可以观察到这个很好的总结。
x
@hpekristiansen 指出,可以通过为、y
和轴指定三个单位向量来实现目标透视z
(正如TikZ 手册v3.1.9a,第 25.2 节“XY 和 XYZ 坐标系”)通过增量步骤和视觉比较完成。因此,@hpekristiansen 添加的唯一一行代码是
\begin{tikzpicture}[ % from before
x={(5,1)}, y={(0,4.3)}, z={(0.3,-0.8)}, % NEW
… % everything else as before