如何使标记箭头的方向指向曲线上装饰点的切线

时间:2016-10-10 19:55:36

标签: latex tikz

我需要用曲线中心的曲线中心装饰一条曲线。在tikz中,可以通过将pre length的值设置为等于箭头的长度来实现,如下例所示

\draw[decoration={ pre length=8pt, markings, mark=at position 0.5 with {\arrow{Stealth[black,length=8pt]}}}, postaction={decorate}] (-0.5, 0.125) to [out=60, in=120] (0.5, 0.125);

然而,现在箭头的方向是箭头尖端的切线,它不对称且根本不好。 enter image description here

是否可以使箭头方向与装饰点(此处为pos=0.5)的切线相同,同时保持箭头中心位于相同位置,使图像看起来对称?以下图片是我需要的。 enter image description here

2 个答案:

答案 0 :(得分:2)

Jake's answer of getting the local coordinate system of an arbitrary point of a curve through markings的启发,我将其调整出来。

\newcommand{\appendarrow}[3]{
\tikzset{
    middlearrow/.style args={#1}{
        decoration={
            markings,
            mark= at position 0.5 with
                {
                    \coordinate (exy1) at (#1/-6.0,0pt);
                    \coordinate (exy2) at (-0.5*#1,#1/3.0);  % 3.0 adjustable 
                    \coordinate (exy3) at (0.5*#1,0pt);
                    \coordinate (exy4) at (-0.5*#1,#1/-3.0); % 3.0 adjustable 
                },
        },
        postaction=decorate
    },
    middlearrow/.default= 3pt
}
\draw[middlearrow=#1] #3;
\fill[#2] (exy1) -- (exy2) -- (exy3) -- (exy4) -- cycle;
}

如果我们想要绘制带有中间箭头的路径,请使用\appendarrow{arrow size}{arrow color}{path}。例如,\appendarrow{6pt}{black}{(-0.5, 0.125) to [out=60, in=120] (0.5, 0.125);}给出了下图 enter image description here

答案 1 :(得分:1)

这个怎么样?

\draw[thick, ->] (-0.5, 0.125) to [out=90, in=180] (0, 0.5);
\draw[thick] (0, 0.5) to [out=0, in=90] (0.5, 0.125);

对我来说,将曲线分成两部分并在第一条曲线的末端放一个常规箭头是最好的主意。