用形状填充圆圈

用形状填充圆圈

有人能告诉我如何制作与我展示的类似的图片吗?我想我知道如何画一个圆圈、字母和点,但不知道如何制作这些区域以及如何用线条填充它们。

任何提示都意义重大。这是来自 Artin 的代数书。

在此处输入图片描述

答案1

您可以下载图像,将其剪切为可行的尺寸并增加亮度,将其导入文件,然后通过使用网格来定位要绘制的所有对象,您可以打印纸张并使用指南针找到坐标;然后从下面的对象和将覆盖它的其余部分开始绘制,然后通过剪切总数并以相同的方式放置文本来完成;正如你所看到的,这很困难但并非不可能。

结果:

在此处输入图片描述

梅威瑟:

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{contour}
\usetikzlibrary{arrows.meta,backgrounds, shapes.geometric,patterns.meta,decorations.pathmorphing}

\pgfdeclarepattern{
    name=hatch,
    parameters={\hatchsize,\hatchangle,\hatchlinewidth},
    bottom left={\pgfpoint{-.1pt}{-.1pt}},
    top right={\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}},
    tile size={\pgfpoint{\hatchsize}{\hatchsize}},
    tile transformation={\pgftransformrotate{\hatchangle}},
    code={
        \pgfsetlinewidth{\hatchlinewidth}
        \pgfpathmoveto{\pgfpoint{-.1pt}{-.1pt}}
        \pgfpathlineto{\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}}
        \pgfpathmoveto{\pgfpoint{-.1pt}{\hatchsize+.1pt}}
        \pgfpathlineto{\pgfpoint{\hatchsize+.1pt}{-.1pt}}
        \pgfusepath{stroke}
    }
}

\tikzset{
    hatch size/.store in=\hatchsize,
    hatch angle/.store in=\hatchangle,
    hatch line width/.store in=\hatchlinewidth,
    hatch size=5pt,
    hatch angle=0pt,
    hatch line width=.5pt,
}

\begin{document}
    
\contourlength{1pt}
\begin{tikzpicture}[
    R/.style = {draw=#1,rectangle,fill=CYAN!30!white},
    C/.style = {draw=#1,circle,fill=white, fill opacity=1},
    E/.style = {draw=#1,ellipse,fill=white, fill opacity=1},
    P/.style = {postaction={pattern={Lines[angle=#1, line width=0.75pt, distance=6pt]}, pattern color=black!50}},
    D/.style = {decorate,decoration={random steps, segment length=2mm, amplitude=0.5mm}},
    */.tip={Circle[sep=-1pt,black,length=2pt]},
]

%Uncoment for get help lines to obtain coordinates.

%\draw (5,5) node{\includegraphics[height=10cm]{DownloadedImage.jpg}};
%%Grid in cm and mm units
%\draw[black!30,step=1mm] (0,0) grid (10,10);
%\draw[black!80,step=1cm,line width=0.2pt] (0,0) grid (10,10);
%\draw[|-|,line width=0.2pt] (0,10)++(0,3pt)-- ++(1cm,0) node[midway](n){};
%\draw[<-] (n.center) |- ++(10pt,5pt) node [anchor=180, inner sep=0pt]{\tiny \verb+1cm+};
%\foreach \i in {0,1,...,10}{
%   \draw(0,10mm*\i)++(-1em,0) node(temp){\sf\tiny\i} (temp)-- (0,10mm*\i);
%   \draw(10mm*\i,0)++(0,-1em) node(temp){\sf\tiny\i} (temp)-- (10mm*\i,0);
%}

% Visible things, order of drawing mathers.

\clip[draw] (5,5) circle (5cm);
\draw (3.6,6.4) node[C,minimum size=35mm,D]{};
\draw (3.1,9.1) node[C,minimum size=45mm,P=-80,D]{};
\draw (4.9,3.7) node[C,minimum size=39mm,D]{};
\draw (8.3,2.7) node[C=,minimum size=39mm,postaction={pattern=hatch, pattern color=black!50, hatch size=10pt, hatch angle=50},D]{};
\draw (5.5,0) node[E,minimum height=39mm,minimum width=29mm,rotate=-15,scale=1.7,D]{};
\draw (3.2,1) node[E,minimum height=39mm,minimum width=25mm,rotate=-30,scale=1.4,P=10,D]{};
\draw (0.3,5.6) node[E,minimum height=39mm,minimum width=25mm,rotate=24,scale=1.8,D]{};
\draw (1.8,3) node[E,minimum height=39mm,minimum width=29mm,rotate=-18,scale=1.2,D]{};

\foreach \xpos/\ypos/\state/\txt/\ori in{
    3.5/1//bN/0,
    4/2/fill/b/0,
    1.7/2.8/fill/1/0,
    2.2/4//N/0,
    2.6/8/fill/a/0,
    3.5/9//aN/0,
    8/2.6/fill/ab/0,
    7.5/4//abN/0%
}{
    \draw(\xpos,\ypos) node[\state,circle,label={[scale=1.5]\ori:\contour{white}{$\txt$}},scale=0.7] {};
}

 \end{tikzpicture}

\end{document}

过程:

在此处输入图片描述

帮助图像背景和网格

在此处输入图片描述

代码:

\draw (5,5) node{\includegraphics[height=10cm]{DownloadedImage.jpg}};
%Grid in cm and mm units
\draw[black!30,step=1mm] (0,0) grid (10,10);
\draw[black!80,step=1cm,line width=0.2pt] (0,0) grid (10,10);
\draw[|-|,line width=0.2pt] (0,10)++(0,3pt)-- ++(1cm,0) node[midway](n){};
\draw[<-] (n.center) |- ++(10pt,5pt) node [anchor=180, inner sep=0pt]{\tiny \verb+1cm+};
\foreach \i in {0,1,...,10}{
    \draw(0,10mm*\i)++(-1em,0) node(temp){\sf\tiny\i} (temp)-- (0,10mm*\i);
    \draw(10mm*\i,0)++(0,-1em) node(temp){\sf\tiny\i} (temp)-- (10mm*\i,0);
}

附录

要在裁剪区域后绘制内容,必须将其输入范围环境中,然后添加新代码,以防使圆圈变粗,我添加了代码\draw[draw, line width=2pt] (5,5) circle (5cm);

还有一个结果:

在此处输入图片描述

代码:

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{contour}
\usetikzlibrary{arrows.meta,backgrounds, shapes.geometric,patterns.meta,decorations.pathmorphing}

\pgfdeclarepattern{
    name=hatch,
    parameters={\hatchsize,\hatchangle,\hatchlinewidth},
    bottom left={\pgfpoint{-.1pt}{-.1pt}},
    top right={\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}},
    tile size={\pgfpoint{\hatchsize}{\hatchsize}},
    tile transformation={\pgftransformrotate{\hatchangle}},
    code={
        \pgfsetlinewidth{\hatchlinewidth}
        \pgfpathmoveto{\pgfpoint{-.1pt}{-.1pt}}
        \pgfpathlineto{\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}}
        \pgfpathmoveto{\pgfpoint{-.1pt}{\hatchsize+.1pt}}
        \pgfpathlineto{\pgfpoint{\hatchsize+.1pt}{-.1pt}}
        \pgfusepath{stroke}
    }
}

\tikzset{
    hatch size/.store in=\hatchsize,
    hatch angle/.store in=\hatchangle,
    hatch line width/.store in=\hatchlinewidth,
    hatch size=5pt,
    hatch angle=0pt,
    hatch line width=.5pt,
}

\begin{document}
    
    \contourlength{1pt}
    \begin{tikzpicture}[
        R/.style = {draw=#1,rectangle,fill=CYAN!30!white},
        C/.style = {draw=#1,circle,fill=white, fill opacity=1},
        E/.style = {draw=#1,ellipse,fill=white, fill opacity=1},
        P/.style = {postaction={pattern={Lines[angle=#1, line width=0.75pt, distance=6pt]}, pattern color=black!50}},
        D/.style = {decorate,decoration={random steps, segment length=2mm, amplitude=0.5mm}},
        */.tip={Circle[sep=-1pt,black,length=2pt]},
        ]
        
        \draw[draw, line width=2pt] (5,5) circle (5cm);
        \begin{scope}
            \clip[draw] (5,5) circle (5cm);
            \draw (3.6,6.4) node[C,minimum size=35mm,D]{};
            \draw (3.1,9.1) node[C,minimum size=45mm,P=-80,D]{};
            \draw (4.9,3.7) node[C,minimum size=39mm,D]{};
            \draw (8.3,2.7) node[C=,minimum size=39mm,postaction={pattern=hatch, pattern color=black!50, hatch size=10pt, hatch angle=50},D]{};
            \draw (5.5,0) node[E,minimum height=39mm,minimum width=29mm,rotate=-15,scale=1.7,D]{};
            \draw (3.2,1) node[E,minimum height=39mm,minimum width=25mm,rotate=-30,scale=1.4,P=10,D]{};
            \draw (0.3,5.6) node[E,minimum height=39mm,minimum width=25mm,rotate=24,scale=1.8,D]{};
            \draw (1.8,3) node[E,minimum height=39mm,minimum width=29mm,rotate=-18,scale=1.2,D]{};
            
            \foreach \xpos/\ypos/\state/\txt/\ori in{
                3.5/1//bN/0,
                4/2/fill/b/0,
                1.7/2.8/fill/1/0,
                2.2/4//N/0,
                2.6/8/fill/a/0,
                3.5/9//aN/0,
                8/2.6/fill/ab/0,
                7.5/4//abN/0%
            }{
                \draw(\xpos,\ypos) node[\state,circle,label={[scale=1.5]\ori:\contour{white}{$\txt$}},scale=0.7] {};
            }
        \end{scope}
        
        \draw[draw, line width=2pt] (5,5) circle (5cm);
            
    \end{tikzpicture}
    
\end{document}

相关内容