写在前面

其实我也不知道为什么我会写这个,本文涉及信号与传递,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. cron 任务的典型格式是: 分钟(0-59) 小时(0-24) 日(1-31) 月(1-12) 星期(0-6) 要执行的命令

    https://linux.cn/article-9687-1.html Cron 是您可以在任何类 Unix 操作系统中找到的最有用的实用程序之一.它用于安排命令在特定时间执行.这些预定的命令或任务 ...

  2. nosql数据库之Redis持久化、备份和主从配置

    一.持久化方式 Redis提供了两种数据备份的方式,一种是RDB,另外一种是AOF.   RDB AOF 开启/关闭 开启:默认开启:关闭:把配置文件中所有的save注释就是关闭了 开启:在配置文件中 ...

  3. 7.1 useradd:创建用户

    7.1 useradd:创建用户 1 使用useradd 常规添加用户工作原理流程     在使用useradd命令时,若不加任何参数选项,后面直接跟所添加的用户名,那么系统首先会读取/etc/log ...

  4. nginx 配置 conf stream

    nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡.默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream参数 ...

  5. KVO后[obj class]与object_getClass(id obj)的结果竟会不一致?

    说说背景,研究下面的代码时,KVO后[obj class]与object_getClass(id obj)的结果竟会不一致? PersonModel *aPersonModel = [[PersonM ...

  6. 手把手带你快速入门jQuery(视频|资料,建议收藏!)

    jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架). jQuery设计的宗旨是 ...

  7. CVD和ALD薄膜沉积技术应用领域

    CVD和ALD薄膜沉积技术应用领域 显示 用于OLED.QD-OLED.甚至未来QLED的薄膜封装,通过有机/无机叠层结构的保护,水汽渗透率WVTR可降至10-5g/m2/day,保证OLED或者量子 ...

  8. 如何在Python中加速信号处理

    如何在Python中加速信号处理 This post is the eighth installment of the series of articles on the RAPIDS ecosyst ...

  9. TOF与结构光技术分析

    TOF与结构光技术分析 一.概述 结构光(Structuredlight),通常采用特定波长的不可见的激光作为光源,它发射出来的光带有编码信息,投射在物体上,通过一定算法来计算返回的编码图案的畸变来得 ...

  10. 什么是GStreamer?

    什么是GStreamer? GStreamer是用于创建流媒体应用程序的框架.基本设计来自俄勒冈大学研究生院的视频管道以及DirectShow的一些想法. GStreamer的开发框架使编写任何类型的 ...