以下内容已通过测试tikz-3dplot
,但可以也考虑2D Ti钾Z 也一样。
此代码:
\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 度,你就必须附加在哪个平面的信息。Ti钾Z 默认将其作为 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 度线上。