写在前面

其实我也不知道为什么我会写这个,本文涉及信号与传递,Python

正题

近期看到一个3年前的视频,1000个圆一笔画出一个Miku



在观看完源码了以后,我发现这是这调用的是基本的goto,用了傅里叶级函数(傅里叶级变化),那个视频中给出了分析,只要圆足够多,就可以画出任意的封闭曲线

任意满足狄利克雷条件的函数,其本身的傅里叶级数都是收敛的。也就是说,函数可以表示成无限个正弦函数和余弦函数和的形式。

假如说我我能把我们需要绘制的二维图像表现在复平面上,把它的轨迹表现成有关时间t的复函数,那么,横坐标的移动和纵坐标的移动都可以看作是关于时间t的函数。

以上的两个函数都是实函数,都可以展开成傅里叶级数



展开的公式太难写了,所以就截图了。

然后,我们对二维图像的轨迹稍加处理,发现这也是个傅里叶级展开式,只不过前面的系数变成了复数。这样子的解释不是证明,但是在傅里叶级变换的复数表示里,正弦函数都是可以通过余弦函数增加一个初始相位来表示,实函数的傅立叶变换才是傅立叶变换的特殊形式,这里不解释。

\(c_n=\int_{0}^{1}{e^{-2i\pi nt}f(t)dt}\)

我们求得这些级数了以后,只需要把系数代回这个公式得到一个坐标



这时,就可以用turtle的goto函数移动到指定的坐标,达到绘制图形的目的

值得思考的

同时函数的傅立叶变换相同,我们计算的级数越多,结果我们越接近我们原本绘制的轨迹,不联系的函数也可以进行傅里叶变换,配合turtle的penup和pendown函数,我们就可以得到断断续续线,绘制过程中的精度也不是越大越好,最佳精度和我们上面分析的级数有关系。

操作

在Adobe illustrator里面设计好自己的图案

图案要一笔带过,中间的线条可以重叠,可以急转弯,但是一定是一笔

然后保存为SVG。
在SVG文件中



把路径复制,

<path class="st0" d='............' />

把省略号中的复制,就是那一大串数字和字母的组合。

保存到ra开头的txt文件中,源码在下面

源码

接下来的,自己琢磨吧...

彩蛋

画个绿色的长虫

import turtle as t

def drawSnake(radius, angle, length):

t.seth(-40)

for i in range(length):

t.circle(radius, angle)

t.circle(-radius, angle)

t.circle(radius, angle/2)

t.fd(40)

t.circle(16, 180)

t.fd(40*2/3)

t.setup(650, 350, 200, 200)

t.penup()

t.fd(-250)

t.pendown()

t.pensize(25)

t.pencolor('green')

drawSnake(40, 80, 4)

t.down()

闲聊,Python中的turtle的更多相关文章

  1. python中的turtle库绘制图形

    1. 前奏: 在用turtle绘制图形时,需要安装对应python的解释器以及IDE,我安装的是pycharm,在安装完pycharm后,在pycharm安装相应库的模块,绘图可以引入turtle模块 ...

  2. Python中的turtle初探

    turtle Python自带了一个turtle库,就像名字turtle说的那样,你可以创建一个turtle,然后这个turtle可以前进,后退,左转,这个turtle有一条尾巴,能够放下和抬起,当尾 ...

  3. python中关于turtle库的学习笔记

    一.基础概念 1.画布:画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置.常用的画布方法有两个:screensize()和setup(). (1)turtle.screen ...

  4. python中的turtle库(图形绘画库)

    turtle绘图的基础知识:1. 画布(canvas) 画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置. 设置画布大小 turtle.screensize(canvwidt ...

  5. 使Python中的turtle模块画图两只小羊

    turtle.circle(radius, extent=None, steps=None) 描述: 以给定半径画圆 参数: radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆 ...

  6. Python学习之turtle库和蟒蛇绘制程序

    Python的函数库 Python语言与C语言Java类似,可以大量使用外部函数库包含在安装包中的函数库:. 比如math, random, turtle等其他函数库,其他函数库用户根据代码需求自行安 ...

  7. python中库引用与import

    在蟒蛇绘制函数中,多有turtle.   ,称它为<a>.<b>的编码风格 库引用 扩充python程序功能的方式 使用import保留字完成,采用<a>.< ...

  8. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  9. python中的Ellipsis

    ...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...

随机推荐

  1. Linux_权限管理理论概述

    一.权限定义 1.文件权限作用的对象 owner :属主 - u group :属组 - g other :其他人 - o 2.文件的三种权限 //针对文件的权限 r 可读 可以使用cat命令查看文件 ...

  2. 克隆并编译otter

    源码编译: git clone 项目到本地,用IDEA打开,等待Maven下载完jar包,打开命令行,进入当前项目的lib目录 执行install.bat命令,该批处理文件会将缺失的jar包安装到你本 ...

  3. lsscsi

    # lsscsi[2:0:0:0] cd/dvd Slimtype DVD A DS8ACSH LC2M /dev/sr0[3:0:0:0] disk ATA Samsung SSD 860 3B6Q ...

  4. linux服务之NFS服务篇

    一.概念 NFS(Network File Server) 网络文件系统(映射).网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录和文件. ...

  5. KEIL中查看程序存储空间的大小

    Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 Code是代码占用的空间,RO-data是 Read Only 只读常 ...

  6. linux stat函数讲解 -(转自秋水Leo)

    stat函数讲解表头文件:    #include <sys/stat.h>             #include <unistd.h>定义函数:    int stat( ...

  7. 10.21 nmap:网络探测工具和安全/端口扫描器

    nmap命令 是一款开放源代码的网络探测和安全审核工具,是Network Mapper的缩写.其设计目标是快速地扫描大型网络.nmap可以发现网络上有哪些主机,主机提供了什么服务(应用程序名称和版本号 ...

  8. Python爬虫-Scrapy框架的工作原理

    Scrapy框架工作原理 Scrapy框架架构图 Scrapy框架主要由六大组件组成,分别为: ​ 调度器(Scheduler),下载器(Downler),爬虫(Spiders),中间件(Middwa ...

  9. 前端工具 | JS编译器Monaco使用教程

    前言 我的需求是可以语法高亮.函数提示功能.自动换行.代码折叠 Monaco Monaco是微软家的,支持的语言很多,还有缩略地图,有时候提示不好用然后包体很大. The Monaco Editor ...

  10. Linux内存技术分析(上)

    Linux内存技术分析(上) 一.Linux存储器 限于存储介质的存取速率和成本,现代计算机的存储结构呈现为金字塔型.越往塔顶,存取效率越高.但成本也越高,所以容量也就越小.得益于程序访问的局部性原理 ...