지금까지 내 코드는 다음과 같습니다.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.markings}
\begin{document}
\begin{tikzpicture}[scale=2]
% axes
\draw [->] (0,-1) --(0,1.5) node [left] {$\mathrm{Im}(p)$};
\draw [->] (-2,0) --(2,0) node [below] {$\mathrm{Re}(p)$};
% pole
\foreach \i/\j in {-0.3/c}{\node[circle, inner sep=1pt] (\j) at (0.9,\i) {$\times$};}
% line
\draw [thick] (-1.5,0) --(0.8,0);
\draw [thick] (1,0) --(1.5,0);
% C - bromwich contour
\node at (-1.2,0) [below right] {$C$};
% mathmode
\draw[<-,shorten <=2mm] (1,-0.3)-- ++ (-20:0.5) node[right] {$v_z=\frac{\mathrm{i}p}{k}$};
% vertical lines
\draw [thick] (0.8,0) -- (0.8,-0.1);
\draw [thick] (1,0) -- (1,-0.1);
% semi circle
\draw (1,-0.1) arc[radius=2mm, start angle=20, end angle=-250];
\end{tikzpicture}
\end{document}
내 문제는 극 주위에 호를 그리는 방법입니다. 나는 명령을 사용하여 여러 번 시도했습니다호그러나 나는 비슷한 그림을 만드는 데 실패했습니다.
그래서 이런 종류의 호/곡선을 수행하는 더 효율적인 방법이 있는지 궁금합니다.
미리 감사드립니다.
답변1
원 위의 화살표가 올바르지 않으며 이 해결 방법을 고려할 수 있는지 모르겠습니다.효율적인그러나 그것은 출발점이 될 수 있습니다.
코드는 cross out
극에 모양을 사용합니다. 보이지 않는 원형 노드가 모든 극 위에 그려집니다. 이 노드는 두 조각으로 그려지는 주변 호에 대한 참조로 사용됩니다.
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, decorations.markings, shapes.misc}
\begin{document}
\begin{tikzpicture}[scale=2,
pole/.style={cross out, draw=black, minimum size=2mm}
]
% axes
\draw [->] (0,-1) --(0,1.5) node [left] {$\mathrm{Im}(p)$};
\draw [->] (-2,0) --(2,0) node [below] {$\mathrm{Re}(p)$};
% pole
\node[pole] (c) at (0.9,-.3) {};
\node[circle, minimum size=6mm] (aux) at (c) {};
% line
\draw [ultra thick,
blue,
decoration={markings,
mark=at position .05 with {\arrowreversed{stealth}},
mark=at position .40 with {\arrowreversed{stealth}},
mark=at position .75 with {\arrowreversed{stealth}}},
postaction={decorate}]
(aux.-90) arc(-90:-250:1.5mm)|- (-1.5,0);
\draw [ultra thick,
red,
decoration={markings,
mark=at position .3 with {\arrow{stealth}},
mark=at position .80 with {\arrow{stealth}}},
postaction={decorate}]
(aux.-90) arc(-90:70:1.5mm)|- (1.5,0);
% C - bromwich contour
\node at (-1.2,0) [below right] {$C$};
% mathmode
\draw[<-,shorten <=2mm] (1,-0.3)-- ++ (-20:0.5) node[right] {$v_z=\frac{\mathrm{i}p}{k}$};
\end{tikzpicture}
\end{document}
답변2
다음은 대안적인 노력입니다.메타포스트에 싸여luamplib
도서관. .lualatex
\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
numeric u; % unit size
u = 1cm;
path xx, yy; % axes and labels
xx = (3 left -- 6 right) scaled u;
yy = (2 down -- 2 up) scaled u;
draw xx withcolor .7 white;
draw yy withcolor .7 white;
label.bot("$\Re\{v_1\}$", point 1 of xx);
label.lft("$\Im\{v_2\}$", point 1 of yy);
% position the pole
z1 = (2.7u,-1u);
% label it with a cross
label("$\times$",z1);
% parameters for the pole marker
numeric gap, radius;
gap = 1/8 u;
radius = 1/3 u;
path arc, cc;
% the arc is most of a circle drawn round the pole
arc = fullcircle rotated 90 % rotate it so point 0 is at top
scaled 2 radius % scale it
shifted z1 % move it to the pole
cutbefore yy shifted (x1-gap,0) % cut off the beginning
cutafter yy shifted (x1+gap,0); % and the end
% join the arc up with some straight segments to make the contour
cc = (-2u,0) -- (x1-gap, 0) -- arc -- (x1+gap,0) -- (5u,0);
% set some drawing options for the arrows
interim linecap := 0; % sharp ends
interim linejoin := 0; % sharp joins & arrowhead
drawoptions(withpen pencircle scaled 3/2 withcolor 2/3 red);
% how many subarrow to show
subarrows = 4;
% draw subarrows along cc
arrowlength = arclength(cc)/subarrows;
numeric a,b;
for i = 1 upto subarrows:
a := arctime (i-1)*arrowlength of cc;
b := arctime i*arrowlength of cc;
drawarrow subpath (a,b) of cc;
endfor
drawoptions();
endfig;
\end{mplibcode}
\end{document}