TikZ(3D)有无节点改变行为

TikZ(3D)有无节点改变行为

以下内容已通过测试tikz-3dplot,但可以也考虑2D TiZ 也一样。

此代码:

\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{arrows.meta}

\begin{document}

\begin{tikzpicture}

\draw[->] (-3,0,0) -- (3,0,0) node[below right] {$x$};
\draw[->] (0,-3,0) -- (0,3,0) node[above right] {$y$};
\draw[->] (0,0,-3) -- (0,0,3) node[below right] {$z$};

\coordinate (o) at (0,0,0);
\coordinate (a) at (3.6,0,4.5);

\draw[dashed] (a) -- (o);

\path (a) -- coordinate[pos=0.32] (b) (o);
\draw [thick,-{Straight Barb},orange] (a) -- ($(a)!1.2cm!90:(o)$) node[black,above left] (c) {c};
\draw [thick,-{Straight Barb},gray] (a) -- node[pos=0.7, below=0.35em] {b} (b);
\draw [thick,-{Straight Barb},red] (a) -- ([shift={(0,1.5,0)}]a) node[black,below right] (d) {d};

\draw ([shift={(0,0,-2.1)}]a) -- ([shift={(0,0,2.1)}]a);

\end{tikzpicture}

\end{document}

产生以下输出:

在此处输入图片描述

黑色简单线条

\draw ([shift={(0,0,-2.1)}]a) -- ([shift={(0,0,2.1)}]a);

应与箭头所示的橙色部分重叠

\draw [thick,-{Straight Barb},orange] (a) -- ($(a)!1.2cm!90:(o)$) node[black,above left] (c) {c};

为什么不行呢?也许我误解了这个($(a)!1.2cm!90:(o)$)表达?

答案1

正如我在评论中提到的,你根本没有使用 tikz-3dplot 库。那么如果你说 90 度,你就必须附加在哪个平面的信息。TiZ 默认将其作为 xy 平面。默认情况下,z 方向沿负 45 度线。如果您希望更改它,您确实需要加载 tikz-3dplot(或 3d 库)。的位置a意外地靠近另一条 45 度线,这就是它意外地几乎成功的原因。如果您把a那条 45 度线放在上面,它确实有效,但只是因为你碰巧调整了一些东西。

在此处输入图片描述

\documentclass[border=2mm,tikz]{standalone}
%\usepackage{tikz-3dplot}
\usetikzlibrary{arrows.meta,calc}

\begin{document}

\begin{tikzpicture}

\draw[->] (-3,0,0) -- (3,0,0) node[below right] {$x$};
\draw[->] (0,-3,0) -- (0,3,0) node[above right] {$y$};
\draw[->] (0,0,-3) -- (0,0,3) node[below right] {$z$};

\coordinate (o) at (0,0,0);
\coordinate (a) at (2.4,-2.4,0);

\draw[dashed] (a) -- (o);

\path (a) -- coordinate[pos=0.32] (b) (o);
\draw [thick,-{Straight Barb},orange] (a) -- ($(a)!1.2cm!90:(o)$) node[black,above left] (c) {c};
\draw [thick,-{Straight Barb},gray] (a) -- node[pos=0.7, below=0.35em] {b} (b);
\draw [thick,-{Straight Barb},red] (a) -- ([shift={(0,1.5,0)}]a) node[black,below right] (d) {d};

\draw[blue] ([shift={(0,0,-2.1)}]a) -- ([shift={(0,0,2.1)}]a);

\end{tikzpicture}

\end{document}

我猜测 Kpym 所说的 a 不与 z 轴正交的意思是,它恰好不位于那条 45 度线上。

相关内容