沿一条现有路径绘制路径,然后沿另一条路径绘制路径

沿一条现有路径绘制路径,然后沿另一条路径绘制路径

我在下面的代码中绘制了两个形状,一条红色曲线和一个黑色矩形。我标记了四个点,A、B、C 和 D。我想知道如何沿着黑色矩形从 A 到 B 绘制一条路径,沿着红色曲线从 B 到 C,然后沿着黑色矩形从 C 到 D 再回到 A。我应该提到,我最终想填充这个形状 ABCD 所包围的区域。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}


\begin{document}

\begin{tikzpicture}

\draw[name path=p0] (0,.8) node[above left] {$D$} -- ++(3,0) |- (0,2) node[above left] {$A$} -- cycle;

\draw[red,name path=p2] (.2,3) .. controls (.5,3) and (3,.2) .. (3.5,.2);

\fill[name intersections={of=p0 and p2}] (intersection-1) circle (2pt) node[below left] {$C$} (intersection-2) circle (2pt) node[above left] {$B$};

\end{tikzpicture}

\end{document}

答案1

标准解决方案是使用let ... in语法。但这不适用于所遵循的路径更复杂的情况。然后您需要更多深奥的选项,例如用节点装饰路径等,这些选项并不像下面这样容易自动化。

\documentclass[tikz]{standalone}
\usetikzlibrary{intersections,calc}
\begin{document}

\begin{tikzpicture}
\draw[name path=p0] (0,.8) coordinate (D) node[above left] {$D$} -- ++(3,0)
     |- (0,2) coordinate (A) node[above left] {$A$} -- cycle;
\draw[red,name path=p2] (2.5,2) circle (1.5cm);
\fill[name intersections={of=p0 and p2}] (intersection-1) circle (2pt) coordinate (C) 
     node[below left] {$C$} (intersection-2) circle (2pt) coordinate (B)  node[above left] {$B$};


\draw[ultra thick,red,fill=yellow] (A) -- (B) let 
\p1 = ($(B)-(2.5,2)$),
\p2 = ($(C)-(2.5,2)$),
\n1 = {atan2(\x1,\y1)},
\n2 = {atan2(\x2,\y2)} in
arc (\n1:\n2:1.5cm) -- (D) -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容