我正在尝试填充下面标记为灰色的区域。
我找到了一些使用圆来实现这种效果的例子clip
。但我找不到使用圆弧来实现这种效果的方法。
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools}
\usepackage{tkz-euclide}
\usepackage{tikz}
\usetikzlibrary{quotes,angles,shapes,backgrounds}
\def \firstarc{(4,0) arc (0:90:4cm)}
\def \secondarc{(8,0) arc (0:30:8cm)}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (8,0);
\coordinate (C) at (8,4);
\coordinate (D) at (0,4);
\draw \firstarc;
\draw \secondarc;
\draw (A)--(B)--(C)--(D)--(A);
\end{tikzpicture}
\end{document}
答案1
这里的所有答案都很好,因为它们提供了实际区域,并且不会通过填充背景白色来作弊。(尽管这会更容易,并且在大多数情况下是一个合适的解决方案。)
但是,当矩形的高度和宽度发生变化时,这些解决方案不起作用,因为所有解决方案都以 30 度角进行硬编码。我相信您可以使用交集库缩短此代码,并且存在纯 tikz 解决方案;这是我的解决方案。
结果看起来和其他人的尝试一样。请注意,这些图像是透明的。
但是,正如前面提到的,也可以改变尺寸
代码
\documentclass[a4paper,12pt,margin=0.1mm]{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all} % load all objects not neccecary in TexLive2020
\begin{document}
\begin{tikzpicture}
\def\width{8} \def\height{3}
\tkzDefPoints{0/0/A, \width/0/B, \width/\height/C, 0/\height/D}
\tkzClipPolygon(A,B,C,D)
% Different waus to define the point E
% \tkzDefPointBy[rotation= center A angle 90](D) \tkzGetPoint{E}
\tkzDefPoint(0.5*\width, 0){E}
% \tkzDefPoint(\height, 0){E}
\tkzCalcLength[cm](A,E) \tkzGetLength{rAE} % \rAE gives the length
\tkzInterLC(C,D)(A,B) \tkzGetPoints{J1}{J2}
\tkzFindSlopeAngle(A,J2)\tkzGetAngle{JAB} % Might have to switch with J1 here
\tkzDrawCircle(A,B); \tkzDrawCircle(A,E)
\fill[blue] (E) arc (0:90:\rAE cm) -- (D) -- (\JAB:\width cm)
arc (\JAB:0:\width cm);
\tkzDrawPolygon[red](A,B,C,D)
\end{tikzpicture}
\end{document}
答案2
因为您已经对arc
s 使用极坐标。
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools}
\usepackage{tkz-euclide}
\usepackage{tikz}
\usetikzlibrary{quotes,angles,shapes,backgrounds}
\def \firstarc{(4,0) arc (0:90:4cm)}
\def \secondarc{(8,0) arc (0:30:8cm)}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (8,0);
\coordinate (C) at (8,4);
\coordinate (D) at (0,4);
\draw \firstarc;
\draw \secondarc;
\draw[red] (A)--(B)--(C)--(D)-- cycle;
\fill[blue] (B) -- (4,0) arc (0:90:4cm) -- (30:8cm) arc (30:0:8cm);
\end{tikzpicture}
\end{document}
答案3
答案4
希望这有帮助!
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools}
\usepackage{tkz-euclide}
\usepackage{tikz}
\usetikzlibrary{quotes,angles,shapes,backgrounds}
\def \firstarc{(4,0) arc (0:90:4cm)}
\def \secondarc{(8,0) arc (0:30:8cm)}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (8,0);
\coordinate (C) at (8,4);
\coordinate (D) at (0,4);
\draw \firstarc;
\draw \secondarc;
\draw (A)--(B)--(C)--(D)--(A);
\fill[fill=gray](30:8cm)--(0,4) arc (90:0:4cm)--(8,0) arc (0:30:8cm)--cycle;
\end{tikzpicture}
\end{document}