我想在自由体图中创建两条有角度的线,但当我给它一个角度时,其中一条线会在页面上跳动。这是为什么?我该如何解决?这是 MWE
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\title{42}
\author{Jane Doe}
\date{June 2011}
\begin{document}
\begin{tikzpicture}
\draw(0,0) circle (0.25cm);
\draw(4,0) circle (0.25cm);
\draw[->] (0,0) -- (-1,0) node[above,near end] {$\vec{F_{21}}$};
\draw[->] (4,0) -- (5,0) node[above,near end] {$\vec{F_{12}}$};
\draw[->] (0,0) -- (0,-0.5) node[right,near end] {$\vec{W}$};
\draw[->] (4,0) -- (4,-0.5) node[left,near end] {$\vec{W}$};
\draw[->,rotate=70] (0,0) -- (1,0) node[right,near end] {$\vec{T}$};
\draw[->,rotate=-70] (4,0) -- (3,0) node[left,near end] {$\vec{T}$};
\end{tikzpicture}
\end{document}
答案1
你可以旋转那条线 (0,0)
。你可以使用rotate around={-70:(4,0)}
,但使用起来更容易
- 相对和
- 极性
坐标。
下面的例子我命名了(0,0)
cleft
,并将点4
单元放在其右侧cright
。然后我将所有线端相++
对于它们放置( )。语法(<angle>:<length>)
表示极坐标。
代码
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) coordinate (cleft) circle (0.25cm);
\draw ([xshift=4] cleft) coordinate (cright) circle (0.25cm);
\draw[->] (cleft) -- ++(180:1) node[above,near end] {$\vec{F_{21}}$};% or ++(-1,0)
\draw[->] (cright) -- ++(0:1) node[above,near end] {$\vec{F_{12}}$}; % or ++(1,0)
\draw[->] (cleft) -- ++(0,-0.5) node[right,near end] {$\vec{W}$}; % or ++(270:1)
\draw[->] (cright) -- ++(0,-0.5) node[left,near end] {$\vec{W}$}; % or ++(90:-1)
\draw[->] (cleft) -- ++(70:1) node[right,near end] {$\vec{T}$};
\draw[->] (cright) -- ++(180-70:1) node[left,near end] {$\vec{T}$}; % or ++(110:1)
% or ++(-70:-1)
\end{tikzpicture}
\end{document}
输出
答案2
还有另一种可能性。首先,原始代码中唯一的问题是旋转,解决方案很简单,rotate around ={-70:(4,0)}
但如果我喜欢使用极坐标和相对坐标,在某些情况下,您需要将 xy 坐标转换为极坐标。这是可能的,但您需要进行一些计算。您可以使用scope
。您可以用原点 (0,0) 绘制所有图形,然后使用shift
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw(0,0) circle (0.25cm);
\draw[->] (0,0) -- (-1,0) node[above,near end] {$\vec{F_{21}}$};
\draw[->] (0,0) -- (0,-0.5) node[right,near end] {$\vec{W}$};
\draw[->] (0,0) -- (70:1) node[right,near end] {$\vec{T}$};
\begin{scope}[xshift=4cm]
\draw(0,0) circle (0.25cm);
\draw[->] (0,0) -- (1,0) node[above,near end] {$\vec{F_{21}}$};
\draw[->] (0,0) -- (0,-0.5) node[left,near end] {$\vec{W}$};
\draw[->] (0,0) -- (110:1) node[left,near end] {$\vec{T}$};
\end{scope}
\end{tikzpicture}
\end{document}