文章目录

  • 简介
  • 演示
  • 安装
  • 方程
    • 参数方程
    • 极坐标方程
  • 源码
  • 拓展
  • 仓库
  • 其它
  • 参考

简介

pythonmatplotlib库绘制心形线。

演示

心-直角坐标 心-极坐标系
扁点的心 动态绘制

安装

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θ)

源码

  1. 根据参数方程绘制心形线。
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
  1. 根据极坐标方程绘制心形线。
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
  1. 绘制一个扁点的心形线。
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
  1. 动态绘制心形线。
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】笛卡尔心形线——数学家的浪漫(花式哄小女友第一天)相关推荐

  1. python turtle笛卡尔心形线_一个浪漫又悲情的爱情故事——笛卡尔心形线

    说明 写这篇文章是因为某天看到这样一个公式 r=a(1-cosθ) ,我上网搜了下,原来是笛卡尔心形线的极坐标方程,这个方程里面的确有一个浪漫又悲情的爱情故事,感兴趣的朋友可以点这里看看,而至于这个故 ...

  2. python画笛卡尔心形线_伊对:学霸如何谈恋爱?揭秘不同专业的学霸表白方式

    近日,一对江西南昌的高颜值学霸情侣引发广泛关注.来自东华理工大学的刘旭东和朱丽芳双双考研成功,两人复试分别以369分和375分的成绩同时被武汉大学资源与环境专业录取.当说起两人为何一起努力考研去同一所 ...

  3. python画笛卡尔心形线方程_伊对:学霸如何谈恋爱?揭秘不同专业的学霸表白方式...

    来源标题:伊对:学霸如何谈恋爱?揭秘不同专业的学霸表白方式 近日,一对江西南昌的高颜值学霸情侣引发广泛关注.来自东华理工大学的刘旭东和朱丽芳双双考研成功,两人复试分别以369分和375分的成绩同时被武 ...

  4. 一个浪漫又悲情的爱情故事——笛卡尔心形线

    说明 写这篇文章是因为某天看到这样一个公式 r=a(1-cosθ) ,我上网搜了下,原来是笛卡尔心形线的极坐标方程,这个方程里面的确有一个浪漫又悲情的爱情故事,感兴趣的朋友可以点这里看看,而至于这个故 ...

  5. 考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)

    <张宇基础30讲>第一讲的几张极坐标图象,这里用Python来实现一下,加深理解,并学习绘制极坐标图像. 1.笛卡尔心形线 公式: import numpy as np import ma ...

  6. python画笛卡尔心形线方程_考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)...

    <张宇基础30讲>第一讲的几张极坐标图象,这里用Python来实现一下,加深理解,并学习绘制极坐标图像. 1.笛卡尔心形线 公式: import numpy as np import ma ...

  7. python绘制笛卡尔心形线方程_canvas绘制爱心的几种方法

    第一种方法:桃心形公式 代码实现的一种方法 使用桃心形方程绘制爱心 var canvas = document.querySelector('canvas'); var ctx = canvas.ge ...

  8. 使用python绘制笛卡尔心形线

    #笛卡尔心形线,r=a(1-sinθ) import math import matplotlib.pyplot as plt import numpy as np r=[] angle=[] for ...

  9. 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( ...

最新文章

  1. 科普丨一文看懂语音识别的技术原理
  2. PowerDesigner使用方法入门学习
  3. 数据流图中flow不显示文字_发动机系统数据流一般参数的解读
  4. 坑爹的UICollectionView
  5. set集合判断集合中是否有无元素_Python入门教程笔记(五)集合(set)及函数
  6. 实现类的多态性,方法的重写和重载
  7. 帮助你的上司达成目标
  8. Windows XP 所提供的键盘快捷键
  9. Tomcat的Document base ……does not exist or is not a readable directory错误
  10. java 两点间距离_Java实现控制台输出两点间距离
  11. 如何使用动态域名,并且自己来定时更新
  12. 全栈开发工程师微信小程序-中
  13. 安卓第三方支付之微信支付
  14. 智能卷发器的原理和功能
  15. 如何打开计算机任务管理器,电脑任务管理器怎么打开
  16. SqlServer Tigger
  17. Given-When-Then表达方式应用
  18. vue引用public目录下文件
  19. 华中师大计算机专业陈鹏,陈鹏-华中农业大学植物科学技术学院
  20. 【Xasset谷歌分包】打包AAB并上传谷歌商店操作流程分享

热门文章

  1. 关于发布《深圳市培育发展生物医药产业集群行动计划(2022-2025年)》的通知
  2. 【个人笔记】关于string头文件
  3. Oracle 手工建库
  4. python 表白代码 biu 比心
  5. 小白安装Ubuntu 18.04 LTS
  6. 支持中文的WordPress缓存加速优化插件WP Fastest Cache
  7. Java包(package)的命名规范,java中package命名规则
  8. vue echarts饼图封装
  9. 堆叠式自动编码器(SAE)--学习笔记
  10. 爬虫解析是干嘛用的?为什么要解析?