GuardSoft Cerberus

GuardSoft Cerberus

我最后问的一个问题证书我得到了很好的答案。现在我的问题是,是否可以在 TikZ 中重新创建如下所示的扭索纹:在此处输入图片描述

或者可能是像

在此处输入图片描述

答案1

扭索纹(Guilloche)是一种装饰性雕刻技术,其中非常精确、复杂的重复图案或设计以精细的细节机械雕刻到底层材料上。具体来说,它涉及一种机刻技术,法语中称为扭索纹,以法国工程师“Guillot”命名,他发明了一种机器,“可以在金属表面上刻出精细的图案和设计

问题是在圆内画一条有固定点的曲线

方法一:我使用 tkz-fct 因为它是我的包而且我知道它但是只使用 tikz 很容易创建同样的东西。(这里你需要 gnuplot)

在此处输入图片描述

\documentclass[11pt]{scrartcl}
\usepackage[dvipsnames]{xcolor}     
\usepackage{tkz-fct}


\begin{document} 

\def\spirographlike#1{%
\def\repeatno{#1}
 \foreach \i in {1,...,\repeatno}
   {%
    \begin{scope}[rotate=360/\repeatno*\i]
      \mycloedcurve
    \end{scope}}%
    } 

\def\mycloedcurve{\tkzFctPolar[color=MidnightBlue,thick,domain=0:2*pi,samples=400]{ 1+cos(3*t)+(sin(3*t))**2}}  

\noindent\begin{tikzpicture}
 \mycloedcurve 
\end{tikzpicture}    
\begin{tikzpicture}[scale=2]
 \tkzInit [xmin=-5,xmax=5,ymin=-5,ymax=5] 
  \spirographlike{40}    
\end{tikzpicture} 

\end{document}

更新

在此处输入图片描述 这样比较好,但你需要一些时间来编译

\documentclass[11pt]{scrartcl}
\usepackage[dvipsnames]{xcolor}     
\usepackage{tkz-fct}


\begin{document} 

\def\spirographlike#1{%
\def\repeatno{#1}
 \foreach \i in {1,...,\repeatno}
   {%
    \begin{scope}[rotate around={360/\repeatno*\i:(.5,0)}]
      \mycloedcurve
    \end{scope}}%
    } 

\def\mycloedcurve{\tkzFctPolar[color=MidnightBlue,thick,domain=0:2*pi,samples=400]{ 1+cos(3*t)+(sin(3*t))**2}}    

\begin{tikzpicture}
 \mycloedcurve 
\end{tikzpicture}    
\begin{tikzpicture}[scale=2]
 \tkzInit [xmin=-5,xmax=5,ymin=-5,ymax=5] 
  \spirographlike{20}    
\end{tikzpicture} 

\end{document} 

答案2

以下是绘制“直线”部分的一种方法。(对于经验丰富的人来说可能有点粗糙……)

TikZ编译时间肯定会考验我们中最有耐心的人,但做这样的事情也是意料之中的……:)

我只从我在以下网站找到的样本中绘制了一个这样的样本数学世界。有一些样本可供下载。它们(如下图所示)是许多正弦波的总和,让它们完美地结合在一起的基本技巧是控制“频率”和“初始相位”。

以下是代码:

\documentclass[12pt,a4paper]{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[very thin]

\foreach \n in {0,...,19}
    {
        \foreach \x [remember=\x as \lastx (initially 0)] in {0.01,0.02,...,6.28}
            {
                \draw [red] (\lastx*2,{(4+sin(5*(180*\lastx/pi)))+((7+sin(7*(180*\lastx/pi)))-(4+sin(5*(180*\lastx/pi))))*(1+sin(5*(180*\lastx/pi)+\n*20))/2}) -- (\x*2,{(4+sin(5*(180*\x/pi)))+((7+sin(7*(180*\x/pi)))-(4+sin(5*(180*\x/pi))))*(1+sin(5*(180*\x/pi)+\n*20))/2});
            }
    }

\end{tikzpicture}

\end{document}

正如您所看到的,我不得不重新调整一下坐标,主要是因为源公式使用了弧度和度数......另外,为了好看,TikZ我还沿着轴拉伸了一点东西。x

经过一段时间后,你会发现结果如下:

在此处输入图片描述

更快的代码:

这个想法是重用前一个坐标,而不是使用 重新计算它\lastx。此外,这意味着将只有{0,...,19}绘制命令,而不是20\times6.29/0.01=12580
此功能通过执行内联 for 循环来使用。

因此你应该这样做:

\begin{tikzpicture}[very thin]

  \foreach \n in {0,...,19} {
      \draw [red] (0,{(4+sin(5*(0)))+((7+sin(7*(0)))-(4+sin(5*(0))))*(1+sin(5*(0)+\n*20))/2}) 
      \foreach \x in {0.01,0.02,...,6.28} { 
          -- (\x*2,{(4+sin(5*(180*\x/pi)))+((7+sin(7*(180*\x/pi)))-(4+sin(5*(180*\x/pi))))*(1+sin(5*(180*\x/pi)+\n*20))/2}) 
      }; % <- Here the \draw ends
  }
\end{tikzpicture}

为了进一步提高速度,角度的计算可以更加明确,并且可以采用更短的表达式:

\begin{tikzpicture}[very thin]
  \foreach \n in {0,...,19} {
      \draw [red] (0,{4+(7-4)*(1+sin(\n*20))/2}) 
      \foreach \x in {0.5,1,...,360} { 
          -- ({6.28318*\x/180},{4+sin(5*\x)+(7+sin(7*\x)-(4+sin(5*\x)))*(1+sin(5*\x+\n*20))/2})
      };
  }
\end{tikzpicture}

作为最后的优化,所有可以减少的变量都应该减少,这不会给出太多,因为它是简单的乘法和除法:

\begin{tikzpicture}[very thin]
  \foreach \n [evaluate={\n*20} as \ntwenty] in {0,...,19} {
      \draw [red] (0,{5.5+1.5*sin(\ntwenty))}) 
      \foreach \x [evaluate={sin(5*\x)} as \sfx] in {0.5,1,...,360} { 
          -- ({0.034906585039886591*\x},{4+\sfx+(3+sin(7*\x)-\sfx)*(1+sin(5*\x+\ntwenty))/2})
      };
  }
\end{tikzpicture}

实际上,编译器的速度提高了一倍,最后的速度更快,当从 更改为 时,evaluate没有\pgfextra\pgfmathparse{sin(5*\x)}\edef\sfx{\pgfmathresult}\endpgfextra任何增益,因此没有显示:

  1. 1分59.699秒
  2. 0分59.100秒
  3. 0分43.627秒
  4. 0分38.714秒

答案3

使用 TikZ 创建扭索纹的另一种方法是使用第三方工具将它们生成为图形文件,然后使用常用的方法将它们导入到您的文档中\includegraphics{…}

我知道以下扭索饰纹工具:

GuardSoft Cerberus

适用于 Microsoft Windows 的复杂专有扭索纹工具,可导出到 PostScript。网站上没有列出价格,但我知道它非常昂贵(数千美元)。

GuardSoft Cerberus 的屏幕截图

埃克森特罗

另一款专有的 Guilloché 生成器,适用于 Mac OS,售价 500 美元。还有一个“精简版”售价 25 美元。支持位图和 PDF 输出。

Excentro 的屏幕截图

扭索纹图案生成器

一款免费的 Adob​​e Flash 应用程序,您可以通过网络浏览器使用它。您只需选择所需的前景色和背景色,然后调整一系列滑块来控制图案的大小和形状。按 即可将图案保存为 JPEG 图像S。如果您的系统有输出 PDF 文件的打印机驱动程序,那么您可以通过右键单击并选择“打印 Guilloche”来打印矢量化 PDF。(我自己还没有测试过。)

subblue 的 Guilloché 图案生成器的屏幕截图

矢量化器

用 HTML 和 JavaScript 重新实现 subblue 的 Guilloché 图案生成器。它可以将图像输出为 PNG 或 SVG 图形。(然后您可以使用您最喜欢的图形转换器,例如Inkscape或者韓國,将 SVG 转换为 PDF 或 EPS 以供 LaTeX 使用。)

Vectorizer 的屏幕截图

相关内容