python 3维图_Python 竟能绘制出如此酷炫的三维图

importsvgwrite# svg图形处理库

2 定义 3D 图生成环境

接下来定义几个类设置好 3 维图基础环境:

725e6081d31ce9d1b2a4f338acc6619f.png

viewport :矩形图范围

camera:包括视图矩阵和投影矩阵

mesh:svg 矢量图所需的网格表面矩阵、着色器和样式字典

3 生成八面体数据

然后生成八面体每个定点的数据:

defoctahedron():

"""Construct an eight-sided polyhedron"""

f = sqrt(2.0) /2.0

verts = numpy.float32([ (0,-1,0), (-f,0, f), ( f,0, f), ( f,0, -f), (-f,0, -f), (0,1,0) ])

triangles = numpy.int32([ (0,2,1), (0,3,2), (0,4,3), (0,1,4), (5,1,2), (5,2,3), (5,3,4), (5,4,1) ])

returnverts[triangles]

4 pyrr 包渲染

接下来利用 pyrr 3维库渲染上面的原始数据,最后生成 svg 矢量图。

0cea7e883350baca7e3850862567aa06.png

5 生成 svg

上面最后一步生成 svg 图形,需要调用下面的 Engine 函数,略微有些复杂:

18adf6adcc6284cf5b0bafec9bfd9a95.png

以上代码全部封装到类中调用,就可以生成八面体图形了。

21e5ef81cbbe5c0d43581dc478f1b53b.png

除了八面体还可以生成很多其他图形。

球体和 Klein 瓶

f8df5154bde4e018226a5deda27241b5.png

代码如下:

e4a11aea4becbfa9eea229541f7247ed.png

多面球体

c00111a583531fa626f536cc5aa54941.png

代码如下:

695749223754943c4cf913967f7b7afe.png

发光的球体

c581c9808b6411b96efc590b98ae5020.png

代码实现:

7d49aa8469ec77ba833f9f12b2583fa0.png

还可以绘制这种曲面体

cac58faadabfa84b708a202a9ac47b8a.png

代码实现如下:

a3b43db6f1b502e8fc2d80e17e1087ed.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值