原理

1.使用python中的mtplotlib库。
2.立体爱心面公式
(x2+94y2+z2−1)3−980y2∗z3−x2∗z3=0(x^2+\frac{9}{4}y^2+z^2-1)^3-\frac{9}{80}y^2*z^3-x^2*z^3=0 (x2+49​y2+z2−1)3−809​y2∗z3−x2∗z3=0

点画法(实心)

代码

import matplotlib.pyplot as plt #导入绘图模块
from mpl_toolkits.mplot3d import Axes3D #3d绘图模块
import numpy as np #导入数值计算拓展模块#start generating points
x_lim=np.linspace(-10,10,150)
y_lim=np.linspace(-10,10,150)
z_lim=np.linspace(-10,10,150)
X_points=[] #用来存放绘图点X坐标
Y_points=[] #用来存放绘图点Y坐标
Z_points=[] #用来存放绘图点Z坐标
for x in x_lim:for y in y_lim:for z in z_lim:if (x**2+(9/4)*y**2+z**2-1)**3-(9/80)*y**2*z**3-x**2*z**3<=0:X_points.append(x)Y_points.append(y)Z_points.append(z)plt.style.use('seaborn')
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
ax.scatter(X_points,Y_points,Z_points,color="red")
plt.show()

运行效果

这个画法侧面看起来很无语。

点画法(空心)

代码

import matplotlib.pyplot as plt #导入绘图模块
from mpl_toolkits.mplot3d import Axes3D #3d绘图模块
import numpy as np #导入数值计算拓展模块#start generating points
x_lim=np.linspace(-10,10,200)
y_lim=np.linspace(-10,10,200)
z_lim=np.linspace(-10,10,200)
X_points=[] #用来存放绘图点X坐标
Y_points=[] #用来存放绘图点Y坐标
Z_tmp=[]
Z_points=[] #用来存放绘图点Z坐标
for y in y_lim:for x in x_lim:for z in z_lim:k=(x**2+(9/4)*y**2+z**2-1)**3-(9/80)*y**2*z**3-x**2*z**3if k<=0 :Z_tmp.append(z)if y<=-0.55 or y>=0.55:X_points.append(x)Y_points.append(y)    Z_points.append(z)if Z_tmp:X_points.append(x)Y_points.append(y)    Z_points.append(max(Z_tmp))X_points.append(x)Y_points.append(y)    Z_points.append(min(Z_tmp))Z_tmp.clear()plt.style.use('seaborn')
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
ax.set_zlim(-1, 1)
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.scatter(X_points,Y_points,Z_points)plt.show()

运行效果

折线画法 (线团)

代码

import matplotlib.pyplot as plt #导入绘图模块
from mpl_toolkits.mplot3d import Axes3D #3d绘图模块
import numpy as np #导入数值计算拓展模块#start generating points
x_lim=np.linspace(-10,10,150)
y_lim=np.linspace(-10,10,150)
z_lim=np.linspace(-10,10,150)
X_points=[] #用来存放绘图点X坐标
Y_points=[] #用来存放绘图点Y坐标
Z_tmp=[]
Z_points=[] #用来存放绘图点Z坐标
for y in y_lim:for x in x_lim:for z in z_lim:k=(x**2+(9/4)*y**2+z**2-1)**3-(9/80)*y**2*z**3-x**2*z**3if k<=0 :Z_tmp.append(z)if y<=-0.55 or y>=0.55:X_points.append(x)Y_points.append(y)    Z_points.append(z)if Z_tmp:X_points.append(x)Y_points.append(y)    Z_points.append(max(Z_tmp))X_points.append(x)Y_points.append(y)    Z_points.append(min(Z_tmp))Z_tmp.clear()plt.style.use('seaborn')
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
ax.set_zlim(-1, 1)
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.plot(X_points,Y_points,Z_points)plt.show()

运行效果

等高线画法(线框)

代码

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as npdef heart_3d(x, y, z):return (x**2+(9/4)*y**2+z**2-1)**3-x**2*z**3-(9/80)*y**2*z**3def plot_implicit(fn, bbox=(-1.5, 1.5)):xmin, xmax, ymin, ymax, zmin, zmax = bbox*3fig = plt.figure()ax = fig.add_subplot(projection='3d')A = np.linspace(xmin, xmax, 100)  # resolution of the contourB = np.linspace(xmin, xmax, 10)  # number of slicesA1, A2 = np.meshgrid(A, A)  # grid on which the contour is plottedfor z in B:  # plot contours in the XY planeX, Y = A1, A2Z = fn(X, Y, z)cset = ax.contour(X, Y, Z+z, [z], zdir='z', colors=('r',))for y in B:  # plot contours in the XZ planeX, Z = A1, A2Y = fn(X, y, Z)cset = ax.contour(X, Y+y, Z, [y], zdir='y', colors=('red',))for x in B:  # plot contours in the YZ planeY, Z = A1, A2X = fn(x, Y, Z)cset = ax.contour(X+x, Y, Z, [x], zdir='x', colors=('red',))# must set plot limits because the contour will likely extend# way beyond the displayed level. Otherwise matplotlib extends the plot limits# to encompass all values in the contour.ax.set_zlim3d(zmin, zmax)ax.set_xlim3d(xmin, xmax)ax.set_ylim3d(ymin, ymax)plt.show()if __name__ == '__main__':plot_implicit(heart_3d)

运行效果

这么好看所以并不是我自己写的代码。
抄的网上,出处懒得找了(自我保护)。

使用python画3D立体爱心相关推荐

  1. Python画3D心形

    Python 画3D心形图 原文 因为需要再打印中文,再原代码上做了修改,引入了字体文件. 代码 #coding=utf-8 #3D心形 from mpl_toolkits.mplot3d impor ...

  2. python画3D曲面图

    python画3D曲面图 过程理解 参考程序 理解过程 坐标点画网格 python.np的命令集 过程理解 参考程序 import numpy as np import plotly.graph_ob ...

  3. python画3d心形_有了这几个3D立体手工教程,幼儿园手工作业再也不用愁!

    大家都听说过3D纸模吗? 妈队今天带来了初级的3D纸模DIY教程非常有意思哦!可以做出很多立体效果的小玩意快来一起试试吧! 3D立体雪花 南方的宝宝不知道有没见过雪呢? 今天就教大家做一款立体雪花冬天 ...

  4. python画3d图-python3利用Axes3D库画3D模型图

    Python3利用Axes3D库画3D模型图,供大家参考,具体内容如下 最近在学习机器学习相关的算法,用python实现.自己实现两个特征的线性回归,用Axes3D库进行建模. python代码 im ...

  5. python画3d圆形图_Python之Numpy:二元函数绘制/三维数据可视化/3D

    意义 在机器学习任务中选择计算模型或者学习数学时,可视化有助于研究函数值的变化趋势(观察收敛.分布.几何形状等),带来直观的感受. 源码 # 绘制二元函数 # 参考文献 # + python画二元函数 ...

  6. python画一个动态爱心

    可以使用 Python 的第三方库 matplotlib 和 numpy 来画出动态爱心. 首先,需要安装这两个库: pipinstall matplotlib pip install numpy 然 ...

  7. Python画3D足球2

    文章目录 前情提要 补点 球形膨胀 前情提要 足球是正五边形和正六边形拼接而成,由此形成的骨架结构,可通过切割正二十面体获得,所以画足球的第一步是画正二十面体:Python绘制正二十面体 在学会绘制正 ...

  8. python画3d图-Python绘制3D图形

    来自:https://www.jb51.net/article/139349.htm 3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行 ...

  9. python画3d圆形图,Python绘制3D图形

    3d图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3d图形的绘制,包括3d散点.3d表面.3d轮廓.3d直线(曲线)以及3d文字等的绘制 ...

最新文章

  1. android 自动打开第三方应用程序,Android如何做到应用程序图标隐藏,由第三方程序显示启动...
  2. ViewPager+Fragment实现TabHost(可复用的类)
  3. 查理和政策配对工厂——设计一个问卷运算系统的B端到C端
  4. mysql 插入怎么知道id_如何知道刚刚插入数据库那条数据的id
  5. 如何向妻子解释OOD(转)
  6. 王道计算机网络 应用层整理 超详细版
  7. (转) Twisted :第十九部分 改变之前的想法
  8. Python3标准库:asyncio异步I/O、事件循环和并发工具
  9. 使用MisakaPatcher制作Galgame外挂汉化补丁
  10. MyBatis缓存介绍
  11. 摄像机产生“拖影”、“重影”的原因
  12. 网站接入服务器必须备案吗,服务器和域名必须备案吗
  13. 数据结构 算法与应用(c++ 描述) 自练答案
  14. 非学校用户如何免费下载论文
  15. as ssd测试软件得分少,教大家AS SSD Benchmark如何测试硬盘性能
  16. 如何写出完美的复试简历?没有科研竞赛经历怎么办?老师喜欢什么样的学生?跨考生?//2021-2-5
  17. 仿趣玩网五屏带标题的jQuery幻灯效果 分享
  18. pdf两个技能,缩略图和更改标题
  19. 论文阅读|基于领域知识图谱的多文档摘要生成与应用
  20. 2018EOS全球超级节点引力峰会:共识的力量

热门文章

  1. vue实现仿猫眼电影
  2. AE-预览的时候出现FPS非实时-解决办法
  3. 如何将视频压缩?快来看看这些方法
  4. MacOS QT qmake 与 CMake 设置ICON
  5. lisp边长注记,求一个标注断开的lisp 和标注合并
  6. C语言:学生信息管理系统(详解+源码)
  7. 台式计算机怎样连接电视机,完美:如何将计算机屏幕连接到电视?如何将台式计算机连接到电视...
  8. 64位计算机连不上打印机,WIN1064位网络打印机已成功连接,无法打印.
  9. 不用找,你想要的行业icon图标素材都在这里
  10. IC验证-浅谈中断验证(一)