TikZ:如何提取/突出显示弯曲路径的一段

TikZ:如何提取/突出显示弯曲路径的一段

我想突出显示由多个控件定义的弯曲路径(颜色、厚度)的一段,如下图所示。我已经尝试使用交叉点和剪切,但失败了。

最好用箭头标记突出显示段的端点。应突出显示的路径段以原始路径的“间隔”给出,例如在原始路径的 1/3 处开始突出显示,在路径的 5/7 处停止突出显示。

但事实上,如果我能以某种方式手动定义突出显示段的开始和停止,我会很高兴。

有任何想法吗?

在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
  \begin{tikzpicture}[scale=1, >=stealth, ->]
    \tikzstyle{node_style}=[inner sep=2pt, circle, fill=black]

    \node[node_style, label=right:{$x$}] at (3,3) (x) {};
    \node[node_style, label=below:{$y$}] at (0,0) (y) {};

    \draw (y) .. controls ++(2,-0.1)  .. (1,1) .. controls ++(-1.5,1.5)  .. (2,2) .. controls ++(2,-0.3)  ..(x);
  \end{tikzpicture}
\end{document}

答案1

选择精确的 1/3 和 5/7 位置会很困难,但您可以利用两个中间点(1,1)和,(2,2)并在它们之间用粗红线绘制相同的贝塞尔曲线。还请注意,我将两端拉长了2pts 以补偿箭头的长度。如果您使用默认箭头而不是,则无需执行此操作stealth

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
  \begin{tikzpicture}[scale=1, > = stealth]
    \tikzstyle{node_style}=[inner sep=2pt, circle, fill=black]

    \node[node_style, label=right:{$x$}] at (3,3) (x) {};
    \node[node_style, label=below:{$y$}] at (0,0) (y) {};

    \draw[->] (y.center)..controls ++(2,-0.1)..(1,1)..controls ++(-1.5,1.5)..(2,2)..controls ++(2,-0.3)..(x);
    \draw[red,very thick,<->,shorten >=-2pt,shorten <=-2pt] (1,1)..controls ++(-1.5,1.5)..(2,2);
  \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容