【Python】笛卡尔心形线——数学家的浪漫(花式哄小女友第一天)
文章目录
- 简介
- 演示
- 安装
- 方程
- 参数方程
- 极坐标方程
- 源码
- 拓展
- 仓库
- 其它
- 参考
简介
用python
的matplotlib
库绘制心形线。
演示
心-直角坐标 | 心-极坐标系 |
---|---|
扁点的心 | 动态绘制 |
安装
pip install matplotlib
方程
参数方程
{x(θ)=a(1−cosθ)sinθy(θ)=a(1−cosθ)cosθ\left\{\begin{matrix} x(\theta )=a\left(1-cos\theta \right) sin\theta \\ y(\theta )=a\left(1-cos\theta \right) cos\theta \end{matrix}\right. {x(θ)=a(1−cosθ)sinθy(θ)=a(1−cosθ)cosθ
极坐标方程
r=a(1−sinθ)r=a(1-sin\theta) r=a(1−sinθ)
源码
- 根据参数方程绘制心形线。
import matplotlib.pyplot as plt
import numpy as npdef cardioid_parametric(a):theta = np.linspace(0, 2*np.pi, 1000)x = a*(1-np.cos(theta))*np.sin(theta)y = a*(1-np.cos(theta))*np.cos(theta)plt.plot(x, y, c='r')plt.axis('off')plt.savefig('./img/heart.png')plt.show()if __name__ == '__main__':cardioid_parametric(1) # draw a cardioid according to the parametric equation
- 根据极坐标方程绘制心形线。
import matplotlib.pyplot as plt
import numpy as npdef cardioid_polar(a):theta = np.linspace(0, 2*np.pi, 1000)r = a*(1 - np.sin(theta))graph = plt.subplot(111, polar=True)graph.plot(theta, r, color='red')plt.savefig('./img/heart-polar.png')plt.show()if __name__ == '__main__':cardioid_polar(1) # draw a cardioid according to the polar equation
- 绘制一个扁点的心形线。
import matplotlib.pyplot as plt
import numpy as npdef cardioid_flat():t = np.linspace(0, np.pi, 1000)x = np.sin(t)y = np.cos(t) + np.power(x, 2/3)plt.plot(x, y, color='r')plt.plot(-x, y, c='r')plt.axis('off')plt.savefig('./img/heart-flat.png')plt.savefig('./img/heart-flat.png')plt.show()if __name__ == '__main__':cardioid_flat() # darw a flat cardioid
- 动态绘制心形线。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animationfigure = plt.figure()
line1, = plt.axes(xlim=(-1.5, 1.5), ylim=(-2.2, 0.45)).plot([], [], c='r')
line2, = plt.axes(xlim=(-1.5, 1.5), ylim=(-2.2, 0.45)).plot([], [], c='r')def init():line1.set_data([], [])line2.set_data([], [])return line1, line2def update(i, a):theta = np.linspace(0, i/np.pi, 100)x = a*(1-np.cos(theta))*np.sin(theta)y = a*(1-np.cos(theta))*np.cos(theta)line1.set_data(x, y)line2.set_data(-x, y)return line1, line2def cardioid_animate(a):ani = animation.FuncAnimation(figure, update, init_func=init, frames=11, fargs=(a,), blit=True)plt.axis('off')ani.save('./img/heart.gif')plt.show()if __name__ == '__main__':cardioid_animate(1) # darw a cardioid dynamically
拓展
1650年,斯德哥尔摩街头,52岁的笛卡尔邂逅了18岁瑞典公主克莉丝汀。笛卡尔落魄无比、穷困潦倒又不愿意请求别人的施舍,每天只是拿着破笔破纸研究数学题。有一天,克莉丝汀的马车路过街头发现了笛卡尔是在研究数学。公主便下车询问,最后笛卡尔发现公主很有数学天赋,道别后的几天笛卡尔收到通知,国王要求他做克莉丝汀公主的数学老师,其后几年中相差34岁的笛卡尔和克莉丝汀相爱,国王发现并处死了笛卡尔。在最后笛卡尔写给克莉丝汀的情书中出现了r=a(1-sinθ)
的数学坐标方程,解出来是个心形图案,就是著名的“心形线”。这封情书最后被收录到欧洲笛卡尔博物馆。
仓库
https://github.com/XavierJiezou/python-cardioid-matplotlib
其它
参考
https://en.wikipedia.org/wiki/Cardioid
https://matplotlib.org/3.2.1/api/_as_gen/matplotlib.animation.FuncAnimation.html
https://zhuanlan.zhihu.com/p/32380300
【Python】笛卡尔心形线——数学家的浪漫(花式哄小女友第一天)相关推荐
- python turtle笛卡尔心形线_一个浪漫又悲情的爱情故事——笛卡尔心形线
说明 写这篇文章是因为某天看到这样一个公式 r=a(1-cosθ) ,我上网搜了下,原来是笛卡尔心形线的极坐标方程,这个方程里面的确有一个浪漫又悲情的爱情故事,感兴趣的朋友可以点这里看看,而至于这个故 ...
- python画笛卡尔心形线_伊对:学霸如何谈恋爱?揭秘不同专业的学霸表白方式
近日,一对江西南昌的高颜值学霸情侣引发广泛关注.来自东华理工大学的刘旭东和朱丽芳双双考研成功,两人复试分别以369分和375分的成绩同时被武汉大学资源与环境专业录取.当说起两人为何一起努力考研去同一所 ...
- python画笛卡尔心形线方程_伊对:学霸如何谈恋爱?揭秘不同专业的学霸表白方式...
来源标题:伊对:学霸如何谈恋爱?揭秘不同专业的学霸表白方式 近日,一对江西南昌的高颜值学霸情侣引发广泛关注.来自东华理工大学的刘旭东和朱丽芳双双考研成功,两人复试分别以369分和375分的成绩同时被武 ...
- 一个浪漫又悲情的爱情故事——笛卡尔心形线
说明 写这篇文章是因为某天看到这样一个公式 r=a(1-cosθ) ,我上网搜了下,原来是笛卡尔心形线的极坐标方程,这个方程里面的确有一个浪漫又悲情的爱情故事,感兴趣的朋友可以点这里看看,而至于这个故 ...
- 考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)
<张宇基础30讲>第一讲的几张极坐标图象,这里用Python来实现一下,加深理解,并学习绘制极坐标图像. 1.笛卡尔心形线 公式: import numpy as np import ma ...
- python画笛卡尔心形线方程_考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)...
<张宇基础30讲>第一讲的几张极坐标图象,这里用Python来实现一下,加深理解,并学习绘制极坐标图像. 1.笛卡尔心形线 公式: import numpy as np import ma ...
- python绘制笛卡尔心形线方程_canvas绘制爱心的几种方法
第一种方法:桃心形公式 代码实现的一种方法 使用桃心形方程绘制爱心 var canvas = document.querySelector('canvas'); var ctx = canvas.ge ...
- 使用python绘制笛卡尔心形线
#笛卡尔心形线,r=a(1-sinθ) import math import matplotlib.pyplot as plt import numpy as np r=[] angle=[] for ...
- MATLAB绘制笛卡尔心形线---by CSDN ChitGPT AI大模型
以下是MATLAB代码,用于绘制笛卡尔心形线: t = linspace(0, 2*pi); x = 16.*sin(t).^3; y = 13.*cos(t)-5.*cos(2*t)-2.*cos( ...
最新文章
- 科普丨一文看懂语音识别的技术原理
- PowerDesigner使用方法入门学习
- 数据流图中flow不显示文字_发动机系统数据流一般参数的解读
- 坑爹的UICollectionView
- set集合判断集合中是否有无元素_Python入门教程笔记(五)集合(set)及函数
- 实现类的多态性,方法的重写和重载
- 帮助你的上司达成目标
- Windows XP 所提供的键盘快捷键
- Tomcat的Document base ……does not exist or is not a readable directory错误
- java 两点间距离_Java实现控制台输出两点间距离
- 如何使用动态域名,并且自己来定时更新
- 全栈开发工程师微信小程序-中
- 安卓第三方支付之微信支付
- 智能卷发器的原理和功能
- 如何打开计算机任务管理器,电脑任务管理器怎么打开
- SqlServer Tigger
- Given-When-Then表达方式应用
- vue引用public目录下文件
- 华中师大计算机专业陈鹏,陈鹏-华中农业大学植物科学技术学院
- 【Xasset谷歌分包】打包AAB并上传谷歌商店操作流程分享