【python】如何利用 turtle 绘制心形图案
turtle作为python内置的绘图库,正好可以用来绘制一些好玩的图形
这次,我们一起来探索如何用它绘制出一个完美的爱心图形
一、分析心形数据
观察如下一个心形图片
先测量下部这个尖端的角度是多少
测得角度为 180-(-40)-40 =100°
继续拆分
1、作中心线和水平线
2、过凹陷处起点作右测半圆的切线,将右侧图形分解为一个半圆,可以测得起点角度为50°
3、作切线的法线 测得下部直线向右倾斜10° ,并且根据全等定理得到线长<绿线>即为半圆的直径
二、绘制图形
一、心形可以视为两半圆加上两条直线的组合,那么如何绘制出半圆? 先来看一下turtle中绘制圆形的函数circle的语法
turtle.circle(半径radius,弧度extent,内接多边形的棱数steps)
要绘制半圆,需要控制弧度为180, 刚刚分析时已经知道起始点的角度在水平方向上左偏移了50° 现在来测试一下
![](/assets/blank.gif)
这里写-100是因为我们要在顺时针方向上绘制100为半径的圆,就是坐标轴里的负方向
看起来没有问题,已经画出来了半个圆,而且位置也和心形一样
接着画直线
这里注意,刚刚分析的时候计算出:
1、直线的起始角要向右偏移10°
2、尖端转折点为向右偏移180-100=80°
3、线长为半圆的直径
芜湖,它来了,现在只剩下左侧的半圆了
刚刚右侧的直线右偏移了10°,如果从左侧开始画就要左偏移10°
但是现在我从底部开始画,所以就需要再向右偏移10°
这里还是顺时针绘制所以记得填负半径
到这已经出现完整的心形了
我再把它完整写出来,并设置填充颜色
三、结合起来写出脚本
import turtle as tttt.setup(1000,800)
tt.pensize(5)
tt.pencolor('pink')tt.fillcolor('pink')
tt.begin_fill()tt.lt(50)
tt.circle(-100,180)tt.rt(10)
tt.forward(200)tt.rt(80)
tt.forward(200)tt.rt(10)
tt.circle(-100,180)tt.end_fill()
红花会还好好好很豪华哈哈哈哈哈哈哈哈
画出来了
如何保存为图片有点麻烦,就不说了
有需求的可以自己去找方法
【python】如何利用 turtle 绘制心形图案相关推荐
- css 绘制心形图案
CSS3 transform-origin 属性设置旋转元素的基点位置. 注释:该属性必须与 transform 属性一同使用. (1)首先,绘制背景: <!doctype html> & ...
- 用java画爱心图_C++和Java命令行绘制心形图案
心形线 心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名. 心脏线亦为蚶线的一种.在曼德博集合正中间的图形便是一个心脏线.心脏线的英文名称& ...
- C/C++ 和 Java 命令行绘制心形图案
心形线 心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名. 心脏线亦为蚶线的一种.在曼德博集合正中间的图形便是一个心脏线.心脏线的英文名称& ...
- desmos绘制心形图案
首先打开desmos图形计算器: 输入: 点击播放.
- 用css3 绘制心形图案
闲来无聊,做做CSS3 <!DOCTYPE html> <html><head><meta charset="UTF-8">< ...
- python心脏线绘制代码_C++和Java命令行绘制心形图代码分享
C++和Java命令行绘制心形图案 心形线 心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名. 心脏线亦为蚶线的一种.在曼德博集合正中间的图 ...
- 怎么用python编写心形图案,python编程爱心形状turtle
如何利用python画一个爱心 1 from turtle import * 2 def curvemove(): #这个函数是为了绘制爱心上方的曲线 3 for i in range(200): 4 ...
- python画出心形图-python如何绘制心形
python绘制心形的方法:利用matplotlib和numpy画心形,代码为[init = np.arange(-np.pi, np.pi, 0.001);plt.fill_between(x, y ...
- python合成心形_python如何绘制心形
python绘制心形的方法:利用matplotlib和numpy画心形,代码为[init = np.arange(-np.pi, np.pi, 0.001);plt.fill_between(x, y ...
最新文章
- 杨英(帮别人名字作诗)
- linux下载哪个python版本-修改linux下python的默认版本
- 棋牌游戏服务器架构: 详细设计(三) 数据库设计
- 可以使用中文作为变量名_次氯酸可以作为伤口消毒使用吗?
- 帝国理工学院暑期学校 | 大数据与创新主题,郭院士领衔,全球Top10校级证书...
- 图片抓取_小小爬虫批量抓取微信推文里的图片
- 商业WiFi“风来了”
- python-获取当前文件名
- 【VM】Win10虚拟机安装Mac OS
- Programming Languages PartB Week1学习笔记——Racket纯函数式编程语言
- 浅析淘宝数据魔方技术架构
- PhotoShop中合并形状颜色会变化的问题
- java deflate_JAVA中的deflate压缩实现方法
- win8/win10微信QQ邮箱可登陆,浏览器显示无网络连接
- 2006高端IT技术图书点评(首发《中华读书报》)
- DSP篇--C6701功能调试系列之 FLASH测试
- 天翼云服务器硬盘怎么挂载,天翼云主机云磁盘管理(一)
- 对二级指针分配内存及理解
- 【Redis实战】认识Redis中的全局哈希表
- restTemplate文件上传与下载
热门文章
- java sap总账凭证接口_SAP系统接口自动生成会计凭证且无需记账码的方法与流程...
- 那些便宜得离谱服务器是怎么来的?
- 书评--提升软件质量的必经之路
- Android防止App崩溃的,Android App Crash之后如何禁止Activity重启
- C语言I——作业03
- 李东生“入选”《福布斯》评选的最差老板
- 手机qq表白代码大全可复制_表白神器 | 520到了,教你用最硬核的方式向她/他表白,绝对不一样!...
- css target怎么用
- UML图和软件设计原则
- Java的垃圾回收机制