![Tikzpicture:如何从当前点绘制一条以 x 轴为终点的给定长度的线?](https://linux22.com/image/418747/Tikzpicture%EF%BC%9A%E5%A6%82%E4%BD%95%E4%BB%8E%E5%BD%93%E5%89%8D%E7%82%B9%E7%BB%98%E5%88%B6%E4%B8%80%E6%9D%A1%E4%BB%A5%20x%20%E8%BD%B4%E4%B8%BA%E7%BB%88%E7%82%B9%E7%9A%84%E7%BB%99%E5%AE%9A%E9%95%BF%E5%BA%A6%E7%9A%84%E7%BA%BF%EF%BC%9F.png)
我正在使用以下代码。我是否可以\draw (0,0) -- (0,1) -- ++(-30:2);
以某种方式修改该部分以绘制给定长度(大于 1 的任何长度,例如 3 个单位)的线段,使其(0,1)
终止于正 x 轴?(无需使用勾股定理手动计算 x 轴上的端点。)
\documentclass[preview]{standalone}
\usepackage{cmbright}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=3]
\draw[->] (-0.25,0) -- (2.25,0) coordinate (x axis);
\foreach \x/\xtext in {0, 0.5/\frac{1}{2}, 1, 1.5/\frac{3}{2}, 2}
\draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north,fill=white] {$\xtext$};
\draw (0,0) -- (0,1) -- ++(-30:2);
\end{tikzpicture}
\end{document}
上述代码的结果:
答案1
角度计算可以在坐标系中完成:
\draw (0,0) -- (0,1) -- ++({-asin(1/2)}:2);
需要使用括号,否则解析器会将的右括号asin
与坐标的右括号混淆。
\documentclass[border=5mm]{standalone}
\usepackage{cmbright}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=3]
\draw[->] (-0.25,0) -- (2.25,0) coordinate (x axis);
\foreach \x/\xtext in {0, 0.5/\frac{1}{2}, 1, 1.5/\frac{3}{2}, 2}
\draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north,fill=white] {$\xtext$};
\draw (0,0) -- (0,1) -- ++({-asin(1/2)}:2);
\end{tikzpicture}
\end{document}
答案2
这里,使用该库构造了尺子和圆规intersections
。
\documentclass[preview]{standalone}
\usepackage{cmbright}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[scale=3]
\draw[->,name path=abscisses] (-0.25,0) -- (2.25,0) coordinate (x axis);
\foreach \x/\xtext in {0, 0.5/\frac{1}{2}, 1, 1.5/\frac{3}{2}, 2}
\draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north,fill=white] {$\xtext$};
%\draw[blue] (0,0) -- (0,1) -- ++(-30:2);
\path[name path=cercle] (0,1) circle (2cm);
\path [name intersections={of =cercle and abscisses}];
\draw (0,0)--(0,1)--(intersection-1);
\end{tikzpicture}
\end{document}