Tikz 中的斜线问题

Tikz 中的斜线问题

我想在自由体图中创建两条有角度的线,但当我给它一个角度时,其中一条线会在页面上跳动。这是为什么?我该如何解决?这是 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}

相关内容