TikZ 中由圆形变成半圆

TikZ 中由圆形变成半圆

参考\clip答案在 TikZ 中绘制半圆,我想画一个半圆。但这种方法在这里不起作用。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \coordinate (A) at (0,0);
  \coordinate (B) at (8,0);
  \coordinate[label=above:C] (C) at ($(A)!.5!(B)$);
  \coordinate[label=above:D] (D) at ($(A)!.5!(C)$);
  \coordinate[label=above:E] (E) at ($(B)!.5!(C)$);

  \draw[dashed] (A) -- (B);
  \draw (D) let \p1 = ($(C) - (D)$) in circle ({veclen(\x1,\y1)});
  \clip (A) rectangle (8,8);
\end{tikzpicture}
\end{document} 

在此处输入图片描述

此外,当使用像CD和这样的相对点时E,如何在剪辑时确定矩形的终点\clip (A) rectangle (8,8);

答案1

如果您想画一个半圆,为什么不使用arc

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \coordinate (A) at (0,0);
  \coordinate (B) at (8,0);
  \coordinate[label=above:C] (C) at ($(A)!.5!(B)$);
  \coordinate[label=above:D] (D) at ($(A)!.5!(C)$);
  \coordinate[label=above:E] (E) at ($(B)!.5!(C)$);

  \draw[dashed] (A) -- (B);
  \draw (A) let \p1 = ($(C) - (D)$), \n1={veclen(\x1,\y1)} in arc[start angle=180, end angle=0, radius=\n1];
\end{tikzpicture}
\end{document} 

在此处输入图片描述

答案2

放在\clip要剪辑的物品前面。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \coordinate (A) at (0,0);
  \coordinate (B) at (8,0);
  \coordinate[label=above:C] (C) at ($(A)!.5!(B)$);
  \coordinate[label=above:D] (D) at ($(A)!.5!(C)$);
  \coordinate[label=above:E] (E) at ($(B)!.5!(C)$);
  \clip (A) rectangle (8,8);

  \draw[dashed] (A) -- (B);
  \draw (D) let \p1 = ($(C) - (D)$) in circle ({veclen(\x1,\y1)});
\end{tikzpicture}
\end{document} 

答案3

更好的是,将夹子放在瞄准镜内以确保安全。

至于剪切矩形,显然(A)是一个角,另一个角应该足够高,而不会给图像(边界框)增加空间。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \coordinate (A) at (0,0);
  \coordinate (B) at (8,0);
  \coordinate[label=above:C] (C) at ($(A)!.5!(B)$);
  \coordinate[label=above:D] (D) at ($(A)!.5!(C)$);
  \coordinate[label=above:E] (E) at ($(B)!.5!(C)$);
  \draw[dashed] (A) -- (B);
  \path (D) let \p1 = ($(C) - (D)$) in circle ({veclen(\x1,\y1)});% set bounding box
  \begin{scope}
    \clip (A) rectangle (current bounding box.north east);
    \draw (D) let \p1 = ($(C) - (D)$) in circle ({veclen(\x1,\y1)});
  \end{scope}
\end{tikzpicture}
\end{document} 

相关内容