
我有一個圖形,我想透過旋轉一個元素來獲得它。我可以得到
(來源: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}