如何旋轉節點的位置但不旋轉節點內的文本

如何旋轉節點的位置但不旋轉節點內的文本

我有一個圖形,我想透過旋轉一個元素來獲得它。我可以得到

在此輸入影像描述
(來源:funkyimg.com

透過以下程式碼:

\documentclass[a4paper]{article}

\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{esvect}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\draw (0,0) circle (1cm) node{HP};

\foreach \angle in {0,30,60,90,120,150,180,210,240,270,300,330} {\begin{scope}[rotate=\angle]
\draw[->] (0,1) .. controls +(0,1) and +(-1,-0.5) .. (1.5,3);
\draw[->, Aquamarine!50!black] (0,1)--(0,2.5)node[above,Aquamarine!50!black]{$\vv{v}$};
\draw[->, Orchid!50!black] (0,1.5)--(0.6,1.5)node[pos=0.5, above,Orchid!50!black]{$\vv{f_{ic}}$};
\end{scope} }
\end{tikzpicture}
\end{document}

或那個 :

在此輸入影像描述
(來源:funkyimg.com

在我的節點中加入旋轉命令:

\documentclass[a4paper]{article}

\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{esvect}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\draw (0,0) circle (1cm) node{HP};

\foreach \angle in {0,30,60,90,120,150,180,210,240,270,300,330} {\begin{scope}[rotate=\angle]
\draw[->] (0,1) .. controls +(0,1) and +(-1,-0.5) .. (1.5,3);
\draw[->, Aquamarine!50!black] (0,1)--(0,2.5)node[above,Aquamarine!50!black,rotate=\angle]{$\vv{v}$};
\draw[->, Orchid!50!black] (0,1.5)--(0.6,1.5)node[pos=0.5, above,Orchid!50!black, rotate=\angle]{$\vv{f_{ic}}$};
\end{scope} }
\end{tikzpicture}
\end{document}

我想要兩者的混合,節點位置像我的第二個範例中那樣旋轉,但其中的文字仍然像我的第一個範例中那樣水平。有沒有辦法做到這一點 ?

我想要的(在簡化的設定中),所需的結果將是紅色的:

在此輸入影像描述
(來源:funkyimg.com

答案1

編輯

我認為使用極坐標可能會更好。我不擅長使用控件,所以曲線不是你想要的,但這顯示了這個想法:

在此輸入影像描述

這是代碼:

\documentclass[a4paper]{article}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{amsmath}
\usepackage{esvect}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
  \draw (0,0) circle (1cm) node{HP};
  \foreach \angle in {0,30,...,330} {
    \draw[->] (\angle:1) .. controls (\angle:2.2) and (\angle-20:2.7) ..  (\angle-30:3);
    \draw[->, Aquamarine!50!black] (\angle:1)--(\angle:2.5);
    \node at (\angle:2.65) [Aquamarine!50!black]{$\vv{v}$};
    \draw[->, Orchid!50!black] (\angle:1.5)--(\angle-20:1.5);
    \node at (\angle-22:1.8)[Orchid!50!black]{$\scriptstyle\vv{f_{ic}}$};
   }
\end{tikzpicture}

\end{document}

特別是,標籤使用極坐標放置在“正確”的位置。請注意,這tikz非常聰明,可以讓您執行諸如(\angle-20:1)更改極坐標角度之類的操作。程式碼的另一個小改進是\foreach循環可以插入所有角度,{0,30,...,330}因此您無需將它們全部鍵入。

--原文文章--

將命令而不是 indei放在rotate裡面似乎可以解決問題:\draw\node

在此輸入影像描述

這是修改後的 MWE:

\documentclass[a4paper]{article}

\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{esvect}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
  \draw (0,0) circle (1cm) node{HP};
  \foreach \angle in {0,30,60,90,120,150,180,210,240,270,300,330} {\begin{scope}[rotate=\angle]
    \draw[->] (0,1) .. controls +(0,1) and +(-1,-0.5) .. (1.5,3);
    \draw[->,rotate=\angle, Aquamarine!50!black] (0,1)--(0,2.5)node[above,Aquamarine!50!black]{$\vv{v}$};
    \draw[->, rotate=\angle, Orchid!50!black] (0,1.5)--(0.6,1.5)node[pos=0.5, above,Orchid!50!black]{$\vv{f_{ic}}$};
  \end{scope} }
\end{tikzpicture}

\end{document}

相關內容