绘制星座狮子座

绘制星座狮子座

tikz 社区,

经过几个小时寻找绘制狮子座的解决方案后,我意识到我无法找到控制点来获得想要的曲线。我尝试了 bend-to 和其他方法,但没有结果。我已固定近似坐标以显示想要的线的概念。有人能帮忙吗?由于版权问题,我没有添加照片,但我认为除了艺术自由之外,获取这个星座的图像并不困难。如果可能的话,我想在 tikz 中完成。

这个梦想有点荒唐。正如我所说,我无法实现它。

    \documentclass[]{article}
    \usepackage{tikz}
    \usetikzlibrary{
                   }
    \usepackage[paperheight=160mm,paperwidth=180mm,top=5mm,bottom=5mm,left=5mm,right=5mm,showframe]{geometry}
    \tikzset{%
      >=latex, % option for nice arrows
      inner sep=0pt,%
      outer sep=2pt,%
      mark coordinate/.style={inner sep=0pt,outer sep=0pt,minimum size=2pt,fill=black,circle}%
    }
    \begin{document}
    % leo
    \begin{tikzpicture}
    \draw[step=0.5cm,help lines] (-2,-2) grid (3,4);
    \foreach \x in {-2,-1.5,...,3}
    \draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};
    \foreach \y in {-2,-1.5,...,4}
    \draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};
    %
    \draw[line width=4mm, line cap=round] (0,0) arc [start angle=0, end angle=360, radius=6mm];
    %
    \filldraw [gray] (0,0) circle [radius=2pt]; %
    \filldraw          [red]       (1,0) circle [radius=2pt];
    \filldraw          [blue]       (2,1) circle [radius=2pt];
    \filldraw          [green]       (2,0) circle [radius=2pt];
    %
    
    \draw[line width=4mm, line cap=round] (0,0.5) 
                                          to[bend left=100] (0,3)
                                          to[bend left=100] (1,0);
    \end{tikzpicture}
    %
    \begin{tikzpicture}
         \coordinate [mark coordinate] (l1) at (0.5,0);
         \coordinate [mark coordinate] (l2) at (1.0,0.5);
         \coordinate [mark coordinate] (l3) at (0.5,1);
         \coordinate [mark coordinate] (l4) at (0.0,0.5);
         \draw (l1) -- (l2) -- (l3) -- (l4)  --(l1);
         % line leaves the "circle" between l2 and l3
         \coordinate [mark coordinate] (gb0) at (0.75,0.75);
         % building a great bow. no circle
         \coordinate [mark coordinate] (gb1) at (0.5,2.0);
         \draw (gb0) -- (gb1);
         \coordinate [mark coordinate] (gb2) at (1.5,2.5);
         \coordinate [mark coordinate] (gb3) at (2.0,2.0);
         \coordinate [mark coordinate] (gb4) at (1.55,-0.25);
         \draw (gb1) -- (gb2) -- (gb3) -- (gb4);
         % last bow to the right
         \coordinate [mark coordinate] (lb1) at (1.75,-0.45);
         \coordinate [mark coordinate] (lb2) at (2.0,-0.25);
         \draw (gb4) -- (lb1) -- (lb2);
    \end{tikzpicture}
    \end{document}

答案1

有几种字体有天文符号。一般来说,你可以查阅全面的 LaTeX 符号列表,虽然很长,但很容易搜索。您可以在表 325–331 中找到感兴趣的字符。

使用\usepackage{starfont}命令\Leo生成:

在此处输入图片描述

使用wasysym命令是\leo

在此处输入图片描述

marvosym\Leo

在此处输入图片描述

该包utfsym包含\usym{264C}

在此处输入图片描述

答案2

快速起点可以是:

\documentclass[tikz,border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}[line width=2mm]
  \draw (0,0) circle (1);
  \draw (30:1) to[out=120,in=270] (0.5,2) to[out=90,in=180] (1.5,3) to[out=0,in=90] (2.5,2) to [out=270,in=180] (2.5,-2) arc (270:315:1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

完工了。

示例 4:来自http://tug.ctan.org/info/symbols/comprehensive/symbols-a4.pdf

在表 330 中,语句 所有 utfsym 符号都是用 TikZ 图形实现的,而不是用字体因此,如果您的符号不是字体,那么当然texpath无法描述它。这意味着texpath不适用于该utfsym软件包或类似软件包!

来自 CarLaTeX 的评论。

如果你知道的话渐近线,你会发现它有几个很神奇的命令!

命令是path[] texpath(Label L)(TEX 绘制标签 L 时将填充的路径数组)。您可以测试许多其他 LaTeX 符号。

usepackage("wasysym");
size(350,0);

path[] g=texpath("\leo");
write(g.length); // Outputs: 2

filldraw(g[0],cyan+green,red+dashed+.8bp);
filldraw(g[1],gray,blue+1.5bp);

write(cyclic(g[0])); // Outputs: true
write(cyclic(g[1])); // Outputs: true

arrow("the red and dashed path ",relpoint(g[0],0.78),dir(90));
arrow("the blue path which has the linewidth is 1.5bp",relpoint(g[1],0),dir(-90));

在此处输入图片描述

\cancer

usepackage("wasysym");
size(350,0);

path[] g=texpath("\cancer");
write(g.length); // Outputs: 4

filldraw(g[1],gray,blue+1.5bp);
filldraw(g[0],cyan+green,red+dashed+.8bp);
filldraw(g[3],gray,blue+1.5bp);
filldraw(g[2],cyan+green,red+dashed+.8bp);

write(cyclic(g[0])); // Outputs: true
write(cyclic(g[1])); // Outputs: true
write(cyclic(g[2])); // Outputs: true
write(cyclic(g[3])); // Outputs: true

在此处输入图片描述

您可以手动处理曲线!

跑步渐近线代码在 MSWindows 系统上的 Notepad++ 中。

步骤 1:安装记事本++

第 2 步:安装 TeXLive(Asymptote 作者推荐)、Adobe Acrobat Reader DC、Asymptote(最新版本)、Ghostscript(稳定版本)、ImageMagick(稳定版本)。

步骤3:添加以下两个文件:

异步文件属于 ..\Notepad++\autoCompletion

用户定义语言.xml属于 ..\PC\AppData\Roaming\Notepad++

要更新新命令,请参阅以下链接:

https://code.google.com/archive/p/asy4cn/downloads(用中文(表达) https://asy.marris.fr/forum/viewtopic.php?t=148(法语)

抱歉,我的母语是越南语,我也懂一点英语。

这是我安装成功后的几张照片。

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

跑步latexusage.tex在 TeXstudio 中:

像这样,文件名是document.tex 在此处输入图片描述

按照如下步骤一步步运行:

  1. Tools --> Commands --> PDFLaTeX,输出如下 在此处输入图片描述
  2. Tools --> Commands --> Asymptote,输出如下 在此处输入图片描述
  3. Tools --> Commands --> PDFLaTeX, 完毕。

完成的文件位于 C:\Users\PC\Downloads 中,如附图所示。 在此处输入图片描述

您还可以选择http://asymptote.ualberta.ca/在线编译 Asymptote 代码。

您必须成功编译任何 Asymptote 代码,然后才能开始使用 Asymptote。

您可以尝试在 Linux 上安装 Notepad++!如果完成,请随时更新此答案。

明确我的观点You can handle the curves manually!

示例 1:我可以在 TeX 中将字母的贝塞尔控制点可视化吗?

示例 2:字体字符的动画填充

示例 3:

// settings.render=8;
unitsize(1cm);

import texcolors; // for pens like CornflowerBlue, Goldenrod,Bittersweet, Melon

texpreamble("\usepackage{starfont}");
path[] h=texpath("\Leo");

// To know the number of paths of Label L in texpath
write(h.length); // Outputs: 2

fill(h[1],pink+opacity(.5));
filldraw(h[0],CornflowerBlue,red+1.5bp); 
pair[] P;   
for(int j=0;j<size(h[0]);++j){ P.push(point(h[0],j)); } 
pair interpoint=extension(P[0],P[2],P[1],P[3]); 
for (int j=0; j<P.length; ++j){ 
  dot("$P["+(string) j+"]$",P[j],dir(j*90)); 
}  
filldraw(shift(interpoint)*scale(0.75)*shift(-interpoint)*h[0],CornflowerBlue+yellow,red+1.5bp);

real[] c=uniform(0,length(h[1]),5);
write(c); // Outputs: {0,4,8,12,16,20}
c.cyclic=true;

pen[] pp={YellowGreen+dashdotted+1bp,blue+dashed+1bp,dotted+1.5bp,Goldenrod+0.6bp,Bittersweet+0.7bp,Melon+0.8bp};

for (int i=0; i<c.length-1; ++i)
  draw(subpath(h[1],c[i],c[i+1]),pp[i],Arrow(size=10));

draw((0,0)--(5,0),Arrow);
draw((5,0)--(-5,4),Arrow);
dot("$(0,0)$",(0,0),dir(90));
dot("$(5,0)$",(5,0),dir(0));
dot("$(-5,4)$",(-5,4),dir(90));

pair[] interpoints=intersectionpoints(h[1],(0,0)--(5,0)--(-5,4),sqrtEpsilon);
write(interpoints.length); // Outputs: 6

dot("$A$",interpoints[0]);
dot("$B$",interpoints[1]);
dot("$C$",interpoints[2]);
dot("$D$",interpoints[3]);
dot("$E$",interpoints[4]);
dot("$F$",interpoints[5]);

在此处输入图片描述

答案4

受 Asymptote 服务代表字形的贝塞尔控制点 (BCP) 的启发,我能够重现具有近似正确 BCP 的曲线。虽然在数学上不熟悉,但看到 Asymptote 提供的 BCP 对我有很大帮助。因此,一个好的答案似乎是:“拿一本数学书或训练你对控制点的使用。”

未解决的是 foreach 循环中 (0,0) 处的点 25 以及无法填充绘制区域的问题。我应该提出一个新问题吗?

姆韦

    \documentclass[]{article}
    \usepackage{tikz}
    \usetikzlibrary{
                   }
    \usepackage{wasysym} % three pkgs with Leo signs
    \usepackage{marvosym}
    \usepackage{utfsym}
    \usepackage[paperheight=160mm,
                paperwidth=180mm,
                top=5mm,
                bottom=5mm,
                left=5mm,
                right=5mm,
                %showframe
               ]{geometry}
    \tikzset{%s
      inner sep=0pt,%
      outer sep=2pt,%
      mark coordinate/.style={inner sep=0pt,outer sep=0pt,minimum size=00pt,}%mark=x}%
    }
    \begin{document}
    wasysym \leo and marvosym \Leo and usym \usym{264C}
    
    \begin{tikzpicture}[scale=1.0]
    % a grid
    \draw[step=.1cm,gray!50!white,very thin] (0,0) grid (8,10);
    \draw[step=1cm,black!40!red, very thin,opacity=0.4] (0,0) grid (8,10);
    \foreach \x/\xtext in {0,4,8}
       \draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {\tiny$\xtext$};
    \foreach \y/\ytext in {1,5,10}
       \draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {\tiny$\ytext$};
    % end grid
    % The sign maximized
    \node[outer sep=0,
          anchor=south west,
          opacity=0.5
         ] at (0,0) {\Huge\color{red!50!white}\usymH{264C}{10cm}};
    % All Points
    \foreach \px/\py [count=\c] in {%
       0.000 /4.000,
       1.900 /5.920,     
       1.900 /5.363,
       0.560 /4.000,
       1.950 /2.627,  % p5
       3.230 /4.000,  % p6
       2.800 /5.350,  % p7
       1.956 /7.600,  % p8
       4.550 /10.00,  % p9         
       7.255 /7.500,  % p10
       6.125 /4.000,  % p11
       5.700 /0.825,  % p12
       7.380 /1.260,  % p13
       7.822 /0.792,  % p14
       6.200 /0.000,  % p15
       4.580 /1.350,  % p16
       5.770 /5.000,  % p17
       6.521 /7.500,  % p18
       4.550 /9.380,  % p19
       2.685 /7.600,  % p20
       3.550 /5.000,  % p21
       3.845 /4.000,  % p22
       1.950 /2.070,  % p23
       0.000 /4,000   % p24
      }{%
       \coordinate[mark coordinate,] (p\c) at (\px,\py);
       \node[label={[left]{\tiny \c}}] 
            at (p\c) {\tiny$\times$};% {};% 
    }
    % All Controlpoints 2 at a time
    \foreach \cpx/\cpy/\cppx/\cppy [count=\c] in {%
       0     /5.15    /0.93 /5.925,   % cp1   cpp1
       2.15  /5.80    /2.15 /5.50,    % cp2   cpp2
       1.145 /5.363   /0.56 /4.80,    % cp3   cpp3
       0.51  /3.28    /1.17 /2.58,    % cp4   cpp4
       2.725 /2.625   /3.25 /3.35,    % cp5   cpp5
       3.175 /4.855   /2.82 /5.275,   % cp6   cpp6
       2.480 /5.800   /2.00 /6.550,   % cp7   cpp7
       1.956 /8.890   /2.92 /10.00,   % cp8   cpp8
       6.18  /10.0    /7.25 /8.890,   % cp9   cpp9
       7.25  /6.15    /6.78 /5.40,    % cp10  cpp10
       5.125 /1.80    /5.125/1.30,    % cp11  cpp11
       6.25  /0.48    /6.800/0.75,    % cp12  cpp12
       7.75  /1.45    /8.025/1.130,   % cp13  cpp13
       6.99  /0.030   /6.490/0.030,   % cp14  cpp14
       5.42  /0.000   /4.717/0.485,   % cp15  cpp15
       4.55  /2.290   /4.825/3.000,   % cp16  cpp16
       6.520 /6.500   /6.525/7.050,   % cp17  cpp17
       6.508 /8.600   /5.680/9.379,   % cp18  cpp18
       3.420 /9.379   /2.690/8.660,   % cp19  cpp19
       2.688 /7.000   /2.770/6.620,   % cp20  cpp20
       3.820 /4.350   /3.838/4.167,   % cp21  cpp21
       3.845 /2.840   /2.925/2.070,   % cp22  cpp22
       0.950 /2.070   /0.000/2.799    % cp23  cpp23
      }{% 
        \coordinate[mark coordinate,] (cp\c) at (\cpx,\cpy);
        \node[red,
              %label={[left]{\tiny cp\c}}
             ] at (cp\c) {\tiny{$\times$}};
        % CONTROLPOINT 2
        \coordinate[mark coordinate,] (cpp\c) at (\cppx,\cppy);
        \node[blue%
              %label={[left]{\tiny cpp\c}}
             ] at (cpp\c) {\tiny{$\times$}};
    }
    % All Beziercurves and helplines
    \foreach \x [evaluate=\x as \xplus using \x+1] in {1,...,23}
       {
        \draw[blue!50!black,line width=0.05mm] (p\x) .. controls (cp\x) and (cpp\x) .. (p\xplus);
        \draw[blue!100!black,line width=0.015mm] (p\x)--(cp\x)--(cpp\x)--(p\xplus);
       }
    \end{tikzpicture}
    \end{document}
    

直观设置 BCP

相关内容