填充半圆与线段之间的区域

填充半圆与线段之间的区域

我知道这是一个简单的问题,虽然我见过很多例子,但我仍然不明白这个方法。我知道可以用\clip所有这些来做,但我不太明白背后的概念

无论如何,这就是我要做的事情。我们将从这张图片开始。这是一个最小的工作示例,用于实际重现图像。

在此处输入图片描述

\documentclass[10pt]{exam}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{pgf,tikz}
\usepackage{tkz-tab}
\begin{document}
\begin{tikzpicture}
\draw (0, 0) -- (0, 4) -- (4, 4) -- (7, 0)--cycle;
\draw [dashed] (4, 4) -- (4, 0);
\draw [fill=black] (0, 0) circle (2pt);
\draw (0, 0) node[below]{$\Delta$};
\draw [fill=black] (0, 4) circle (2pt);
\draw (0, 4) node[above]{${\rm A}$};
\draw [fill=black] (4, 4) circle (2pt);
\draw (4, 4) node[above]{${\rm B}$};
\draw [fill=black] (7, 0) circle (2pt);
\draw (7, 0) node[below]{$\Gamma$};
\draw [fill=black] (4, 0) circle (2pt);
\draw (4, 0) node[below]{${\rm Z}$};
\draw [shift={(2.,4.)}] plot[domain=3.141592653589793:6.283185307179586,variable=\t]({1.*2.*cos(\t r)+0.*2.*sin(\t r)},{0.*2.*cos(\t r)+1.*2.*sin(\t r)});
\draw [dashed] (4, 4) -- (0, 0);
\draw [dashed] (0, 4) -- (2, 2);
\end{tikzpicture}
\end{document}

现在,我最终想要实现的是遮蔽由圆弧和虚线段包围的区域。如果将 ΒΔ 与圆弧的交点称为 E,则所需的线段将是 AE、BE。

这是我的主要问题,我不知道在这种情况下我应该怎么做。你能帮我解决吗?

答案1

一种选择是绘制两次曲线路径,但第二次继续绘制路径到与 delta-B 线的交点,然后返回起点并填充此路径。下面我这样做了on background layer(需要backgrounds库),因此填充不会覆盖任何线条。

我还使用该intersections库自动计算交点 E,并且我稍微重写了代码,先定义一些坐标,然后再使用这些坐标。

哦,千万不要使用\rm,因为它已经被弃用了将近 25 年了。\mathrm{A}请使用 。

在此处输入图片描述

\documentclass[10pt]{exam}
\usepackage{tikz}
\usetikzlibrary{backgrounds,intersections}
\begin{document}
\begin{tikzpicture}
\coordinate [label=below:$\Delta$] (delta) at (0,0);
\coordinate [label=below:$\mathrm{Z}$] (Z) at (4,0);
\coordinate [label=above:$\mathrm{B}$] (B) at (4,4);
\coordinate [label=above:$\mathrm{A}$] (A) at (0,4);
\coordinate [label=below:$\Gamma$] (gamma) at (7,0);

\draw (delta) -- (A) -- (B) -- (gamma) -- cycle;
\draw [dashed] (Z) -- (B);
\foreach \X in {A,B,Z,delta,gamma}
   \draw [fill=black] (\X) circle[radius=2pt];

\draw [name path=cos,shift={(2.,4.)}] plot[domain=pi:2*pi,variable=\t]({1.*2.*cos(\t r)+0.*2.*sin(\t r)},{0.*2.*cos(\t r)+1.*2.*sin(\t r)});
\draw [name path=straight,dashed] (B) -- (delta);
\draw [name intersections={of=cos and straight},dashed] (A) -- (intersection-1);

\begin{scope}[on background layer]
\fill [blue!20,name path=cos,shift={(2.,4.)}] plot[domain=pi:2*pi,variable=\t]({1.*2.*cos(\t r)+0.*2.*sin(\t r)},{0.*2.*cos(\t r)+1.*2.*sin(\t r)}) -- (intersection-1) -- cycle;
\end{scope}
\end{tikzpicture}
\end{document}

相关内容