钛钾Z 库calc
可以处理角度值:
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc,intersections}
\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.1,0,1.2);
\draw[dashed] (a) -- (o);
\path (a) -- coordinate[pos=0.32] (b) (o);
\draw [thick,-{Straight Barb},orange] (a) -- ($(a)!1.2cm!90:(o)$) coordinate[label={[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) coordinate[label={[black]above right:d}] (d);
\draw (d) -- ($(c)!1.4cm!90:(a)$) coordinate (h);
\end{tikzpicture}
\end{document}
输出为:
($(c)!1.4cm!90:(a)$)
给定任何正值或负值的角度,h
始终位于 (x,z) 平面。在这种情况下,线段c
--h
应该y
相对于 (x,z) 平面垂直(平行于)。那么,如何($(c)!1.4cm!90:(a)$)
修改表达式以实现这一点呢?
正如评论中提到的,上面的代码没有使用tikz-3dplot
。但是,如果这个包可以提供传统 Ti 之外的解决方案钾仅 Z 方法,可以,并且可以在这里使用。
要求的解释
这个问题是一系列问题的一部分(第一个问题,第二个问题,第三个问题,第四个问题,第 5 个问题)。
要求描绘一个相互正交的向量三元组。其中一个向量(b
上图中的 )位于 (x,z) 平面中一般的位置并指向原点;飞机由矢量生成的c
,并d
应突出显示。此三元组应在 3D 空间中描绘,我应该能够任意旋转空间方向。轴的最终配置应如图所示这个答案,z
轴指向右。
这工具通过什么可以获得这一点并不重要:它可以是 Ti钾Z,以及tikz-3dplot
,以及它们的组合。是否tikz-3dplot
必须使用是问题的一部分:有时可能是仅有的工具,有时它可能只是一个选择。目前为止,我知道的还不够tikz-3dplot
。
所有这些总结并不是一开始就写的,因为我很难,甚至不可能,这张照片我无法提供任何关于一般的图片。这个问题肯定会遭到反对和批评(因为它是第一个问题)。
这第二个问题实际上是模棱两可的,因为我没有注意到 45° 线。鉴于此,我总是试图提供快速而准确的问题,后做出一些尝试。
感谢所有尝试处理这些图像的人。我希望这能尽可能地满足评论中提出的澄清要求。
答案1
这不是真正的答案,但可能是第一步。如果加载库 3d,则可以指定要在其中工作的平面。这是一个例子。
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc,intersections,3d}
\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.1,0,1.2);
\draw[dashed] (a) -- (o);
\path (a) -- coordinate[pos=0.32] (b) (o);
\draw [thick,-{Straight Barb},orange] (a) -- ($(a)!1.2cm!90:(o)$) coordinate[label={[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) coordinate[label={[black]above right:d}] (d);
\begin{scope}[canvas is yz plane at x=1]
\draw (d) -- ($(c)!1.4cm!90:(a)$) coordinate (h);
\end{scope}
\end{tikzpicture}
\end{document}
如您所见,语法相当不言自明。然而,我很难理解你到底想要什么,因为正如@Kpym 指出的那样,你的指示有些含糊不清。但我确实希望这个例子能帮助你实现你想要的。
还请注意,我花了一些时间将您的代码转换为 tikz-3dplot,但没有找到一种优雅的方法。障碍包括 tikz-3dplot 不能太直接地使 y 轴指向上方,它使用欧拉角,这使得很难绕 x 轴旋转,并且需要反射才能使轴匹配。这些不是概念问题,但我也无法制作出优雅的东西。