Как нарисовать эту диаграмму в TiкЗ?
Извините, что не привел минимальный пример, потому что я застрял с самого начала. Я не могу найти решение для многих подзадач, которые возникли во время моих попыток. Вот самые сложные:
- Изогнутые линии:Они, очевидно, должны иметь один и тот же центр, но если я использую этот центр, высота картинки становится чрезвычайно огромной, что не помещается на странице. Если я использую
arc
, я могу избежать ненужной огромной высоты, но слишком сложно сделать дуги концентрическими. - Обозначения прямого угла:Я нашел решение: нарисовать небольшой квадрат, у которого пунктирная линия и кривые являются двумя сторонами. Конечно, я не могу использовать
\pic
здесь (или могу?). Но здесь 8 таких квадратов, поэтому рисование такого большого количества квадратов сделает мой код чрезвычайно длинным, что мне не нравится. - Изогнутые стрелки:Я думаю,
in
что иout
хорошо, но мне слишком сложно найти координаты и найти углы касания. Я недостаточно "чувствителен",controls
чтобы найти контрольные точки.
Можете ли вы мне помочь? Спасибо заранее!
решение1
Согласно моим наблюдениям, можно получить приемлемые результаты, отрегулировав ослабление. (И вы можете нарисовать символы под прямым углом в виде петли.)
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{arrows.meta,bending}
\begin{document}
\begin{tikzpicture}[scale=1.5,font=\sffamily]
\begin{scope}
\path[preaction={draw,thick},clip] (-4,3) rectangle (4,8);
\foreach \Y [count=\Z,evaluate=\Z as \Voltage using {int(440-\Z*40)}] in {1.2,1.4,...,2.2}
{\draw (0,0) circle ({exp(\Y)});
\node[rotate=-22.5,fill=white] at (67.5:{exp(\Y)}){\Voltage~V};}
\foreach \X in {60,75,...,120}
{\draw[dashed] (0,0) -- ++ (\X:10);
\foreach \Y in {1.2,1.4,...,2.2}
{\draw ({\X-10/exp(\Y)}:{exp(\Y)}) -- ({\X-10/exp(\Y)}:{exp(\Y)+0.2})
-- ({\X}:{exp(\Y)+0.2});}}
\end{scope}
\draw[thick,-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4,5.5)
to[out=0,in=-110] (0.5,8.5) node[right]{A};
\draw[thick,-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4,5.5)
to[out=0,in=-105,looseness=1.3] (75:8.7) node[right]{B};
\draw[thick,-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4,5.5)
to[out=0,in=95,looseness=0.8] (90:2.7) node[left]{C};
\draw[thick,-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4,5.5)
to[out=0,in=75,looseness=1.5] (75:2.7) node[right]{D};
\draw[thick,{Circle}-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4.5,5.5)
node[midway,above]{$v$} node[midway,below,align=center]{charged\\ particle};
\end{tikzpicture}
\end{document}
Я не знаю, насколько неоднородно ваше поле. Конечно, можно было бы нарисовать окружности и по закону Кулона.
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{arrows.meta,bending}
\begin{document}
\begin{tikzpicture}[scale=1.5,font=\sffamily]
\begin{scope}
\path[preaction={draw,thick},clip] (-4,3) rectangle (4,8);
\foreach \Voltage in {440,400,...,200}
{\draw (0,0) circle ({4*(400/\Voltage)});
\node[rotate=-22.5,fill=white] at (67.5:{4*(400/\Voltage)}){\Voltage~V};}
\foreach \X in {60,75,...,120}
{\draw[dashed] (0,0) -- ++ (\X:10);
\foreach \Voltage in {440,400,...,200}
{\draw ({\X-2*\Voltage/400}:{4*(400/\Voltage)}) --
({\X-2*\Voltage/400)}:{4*(400/\Voltage)+0.15})
-- ({\X}:{4*(400/\Voltage)+0.15});}}
\end{scope}
\draw[thick,-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4,5.5)
to[out=0,in=-110] (0.5,8.5) node[right]{A};
\draw[thick,-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4,5.5)
to[out=0,in=-105,looseness=1.3] (75:8.7) node[right]{B};
\draw[thick,-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4,5.5)
to[out=0,in=95,looseness=0.8] (90:2.7) node[left]{C};
\draw[thick,-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4,5.5)
to[out=0,in=75,looseness=1.5] (75:2.7) node[right]{D};
\draw[thick,{Circle}-{Stealth[length=2mm,bend]}] (-5.5,5.5) -- (-4.5,5.5)
node[midway,above]{$v$} node[midway,below,align=center]{charged\\ particle};
\end{tikzpicture}
\end{document}