专栏名称: 程序人生
程序人生,不止一面。关注程序员生活,汇聚开发轶事,奉送各种福利。
目录
相关文章推荐
货拉拉技术  ·  API灵活定义+极速驱动:货拉拉星图平台技术 ... ·  2 天前  
OSC开源社区  ·  你每天都很急(程序员版) ·  4 天前  
OSC开源社区  ·  AI ... ·  3 天前  
玉伯  ·  在“找资料 + 写稿”场景 YouMind ... ·  3 天前  
阿里云云栖号  ·  国通星驿与阿里云共同启动AI战略合作! ·  3 天前  
51好读  ›  专栏  ›  程序人生

百行代码发射红心,程序员何愁命不中女朋友!

程序人生  · 公众号  · 程序员  · 2022-08-04 08:32

正文

请到「今天看啥」查看全文


放大一点看的话,就会发现上面这个红心其实是一条连续上下波动的曲线。下面的红心,是一个真正封闭的心形,只不过是由四条曲线首尾相连组成的。

import numpy as npimport matplotlib.pyplot as plt
x1 = np.linspace(0, 2, 300)x2 = np.linspace(0, -2, 300)
y11 = (np.power(x1, 2/3) + np.power(np.power(x1, 4/3)-4*np.power(x1, 2)+4, 0.5))/2 - 0.12y12 = (np.power(x1, 2/3) - np.power(np.power(x1, 4/3)-4*np.power(x1, 2)+4, 0.5))/2y21 = (np.power(-x2, 2/3) + np.power(np.power(-x2, 4/3)-4*np.power(-x2, 2)+4, 0.5))/2 - 0.12y22 = (np.power(-x2, 2/3) - np.power(np.power(-x2, 4/3)-4*np.power(-x2, 2)+4, 0.5))/2
plt.plot(x1, y11, c='r')plt.plot(x1, y12, c='r')plt.plot(x2, y21, c='r')plt.plot(x2, y22, c='r')plt.show()

四条曲线首尾相连组成的心形

那么,可用用一笔画一个心形吗?当然可以,极坐标方程 r = Arccos(sinθ)就是一条心形线,只是形状不够完美而已。

import numpy as npimport matplotlib.pyplot as plt
theta = np.linspace(0, 2*np.pi, 1000)x = np.arccos(np.sin(theta)) * np.cos(theta)y = np.arccos(np.sin(theta)) * np.sin(theta)
plt.plot(x, y, c='r')plt.show()

心形线

是时候展示3D版的红心了。运行下面的代码,除了需要numpy模块,还需要安装wxgl模块——基于PyOpenGL的三维数据绘图工具包。

pip install wxgl

关于wxgl模块的更多详情,请点击 十分钟玩转3D绘图:WxGL完全手册 ,这里是 中文文档







请到「今天看啥」查看全文