答案1
这里的问题是,您试图用两个彼此非常接近的点绕过路径上的一个角:
- 第二个终点
arc
cycle
关闭路径的点。
当我编译你的代码时,我发现了一个可怕的故障:
我在这里建议一种替代解决方案,该解决方案基于使用辅助路径从中间切割其中一个圆弧来找到中间点:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{ext.topaths.arcthrough}
\begin{tikzpicture}[x=1cm,y=1cm]
\draw [help lines] (0,0) grid (4,6);
\draw[rounded corners, fill=cyan!20]
(4,2) arc [start angle=45, end angle=135, radius=2.828]
arc [start angle=-131.81, end angle=-48.19, radius=3] -- cycle ;
\begin{scope}[yshift=2cm]
% Auxiliar path to calculate coordinate (A)
\path
(4,2)
arc [start angle=45, end angle=135, radius=2.828]
node[pos=0.5, circle, fill=red, inner sep=1pt] (A) {}
;
\draw[rounded corners, fill=cyan!20]
(A)
arc [start angle=90, end angle=135, radius=2.828]
arc [start angle=-131.81, end angle=-48.19, radius=3]
arc [start angle=45, end angle=90, radius=2.828]
;
\end{scope}
\end{tikzpicture}
\end{document}
答案2
通过一些数学知识...我尝试为变量使用有用的名称:半径、等边三角形的边(因为初始角度是\asrt=45
)和各种角度。如果不清楚,请告诉我。
评论
我更新了代码;有三个变量:半径\r
、初始角度\asrt
和\adif
获得圆角所需的校正角度。请注意,例如,rounded corners
如果无法正常工作。\adif=3
代码
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, math}
\begin{document}
\begin{tikzpicture}[%
evaluate={%
\r = 2.8;
\asrt = 45;
\aend = 180 -\asrt;
\adif = 5;
\s = \r*sin(\asrt);
}]
\draw [help lines] (-2, -2) grid (2, 2);
\draw[blue] (-2.5, 0) -- (2.5, 0);
\draw[red, rounded corners, fill=cyan!20]
($(0, -\s) +(\asrt +\adif: \r)$)
arc (\asrt +\adif:\aend -\adif: \r)
-- ($(0, \s) +(-\aend +\adif: \r)$)
arc (-\aend +\adif:-\asrt -\adif: \r) -- cycle;
\end{tikzpicture}
\end{document}