绘制空心圆、半实圆和全实圆的正确方法是什么?

绘制空心圆、半实圆和全实圆的正确方法是什么?

我正在尝试使用 tikz 绘制简单的空心、半实心和全实心的圆圈。以下是我的代码:

\documentclass[12pt]{article}

\usepackage{tikz}
\newcommand*\emptycirc{\tikz\draw (0,0) circle (1.0ex);} 
\newcommand*\halfcirc{\tikz\draw[fill] (0,0)-- (90:1ex) arc (90:270:1ex) -- cycle ;}
\newcommand*\fullcirc{\tikz\fill (0,0) circle (1.0ex);} 

\begin{document}

\begin{tabular}{|c|}
            \hline
            \emptycirc\\ \hline
            \halfcirc \\ \hline
            \fullcirc \\ \hline
        \end{tabular}

\end{document}

我想在半圆方面实现以下两个方面。我想

  • 显示halfcirc圆圈的其余部分
  • 我想控制半圆的半径,类似于圆(1.0ex)。

尝试了很多次,但都不起作用。

答案1

\documentclass[12pt]{article}

\usepackage{tikz}
\newcommand*\emptycirc[1][1ex]{\tikz\draw (0,0) circle (#1);} 
\newcommand*\halfcirc[1][1ex]{%
  \begin{tikzpicture}
  \draw[fill] (0,0)-- (90:#1) arc (90:270:#1) -- cycle ;
  \draw (0,0) circle (#1);
  \end{tikzpicture}}
\newcommand*\fullcirc[1][1ex]{\tikz\fill (0,0) circle (#1);} 

\begin{document}

\begin{tabular}{|c|}
            \hline
            \emptycirc \emptycirc[2ex]\\ \hline
            \halfcirc \halfcirc[2ex]\\ \hline
            \fullcirc \fullcirc[2ex]\\ \hline
        \end{tabular}

\end{document}

在此处输入图片描述

如果需要更厚的边框,

\documentclass[12pt]{article}

\usepackage{tikz}
\newcommand*\emptycirc[1][1ex]{\tikz\draw[thick] (0,0) circle (#1);} 
\newcommand*\halfcirc[1][1ex]{%
  \begin{tikzpicture}
  \draw[fill] (0,0)-- (90:#1) arc (90:270:#1) -- cycle ;
  \draw[thick] (0,0) circle (#1);
  \end{tikzpicture}}
\newcommand*\fullcirc[1][1ex]{\tikz\fill (0,0) circle (#1);} 

\begin{document}

\begin{tabular}{|c|}
            \hline
            \emptycirc \emptycirc[2ex]\\ \hline
            \halfcirc \halfcirc[2ex]\\ \hline
            \fullcirc \fullcirc[2ex]\\ \hline
        \end{tabular}

\end{document}

在此处输入图片描述

答案2

如果您想要圆形nodes而不仅仅是圆形,您可以使用以下样式:

\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}[
    fullcircle/.style={circle, draw=#1, fill=#1},
    fullcircle/.default=black,
    halfcircle/.style={circle, draw=#1, 
        path picture={\fill[#1] (path picture bounding box.north west) rectangle (path picture bounding box.south);}},
    halfcircle/.default=black,
    emptycircle/.style={circle, draw=#1, fill=none},
    emptycircle/.default=black,
    node distance=5mm
    ]

    \node[fullcircle] (a) {}; \node[fullcircle=red, minimum size=5ex, right=of a] (b) {};
    \node[halfcircle, below=of a] (a) {}; \node[halfcircle=red, minimum size=5ex, right=of a] (b) {};
    \node[emptycircle, below=of a] (a) {}; \node[emptycircle=red, minimum size=5ex, right=of a] (b) {};
    \end{tikzpicture}
    \end{document}

在此处输入图片描述

答案3

使用xelatex或运行lualatex

\documentclass[12pt]{article}
\usepackage{array}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\begin{document}

\begin{tabular}{|>{$}c<{$}>{\Huge$}c<{$}|}\hline
    \lgwhtcircle           &\lgwhtcircle\\ \hline
    \circlelefthalfblack   &\circlelefthalfblack\\ \hline
    \circlerighthalfblack  &\circlerighthalfblack\\ \hline
    \circlebottomhalfblack &\circlebottomhalfblack\\ \hline
       \circletophalfblack &\circletophalfblack\\ \hline
    \mdlgblkcircle         &\mdlgblkcircle\\ \hline
\end{tabular}

\end{document}

在此处输入图片描述

答案4

接受的答案很棒。但是,我发现\fullcirc比其他两个小,这使得对齐变得困难,如第一张图所示。

在此处输入图片描述

原因是全圆只填充了圆圈,但没有画出轮廓。我们可能想\filldraw使用\fill

% \newcommand*\fullcirc[1][1ex]{\tikz\fill (0,0) circle (#1);} 
\newcommand*\fullcirc[1][1ex]{\tikz\filldraw (0,0) circle (#1);} 

下图显示它们现在大小相同。

在此处输入图片描述

相关内容