万万没想到Python 竟能绘制出如此酷炫的三维图.docx
- 文档编号:24018980
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:11
- 大小:512.58KB
万万没想到Python 竟能绘制出如此酷炫的三维图.docx
《万万没想到Python 竟能绘制出如此酷炫的三维图.docx》由会员分享,可在线阅读,更多相关《万万没想到Python 竟能绘制出如此酷炫的三维图.docx(11页珍藏版)》请在冰豆网上搜索。
万万没想到Python竟能绘制出如此酷炫的三维图
作者|JayAlammar
转载自|高级农民工
原文|
通常我们用Python绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的:
这些图怎么做出来呢?
今天就来分享下如何一步步绘制出三维矢量(SVG)图。
八面体
我们先以下面这个八面体为例。
1安装相关包
首先安装两个必备包:
importpyrr#NumPy的3D函数库importsvgwrite#svg图形处理库
2定义3D图生成环境
接下来定义几个类设置好3维图基础环境:
viewport:
矩形图范围
camera:
包括视图矩阵和投影矩阵
mesh:
svg矢量图所需的网格表面矩阵、着色器和样式字典
3生成八面体数据
然后生成八面体每个定点的数据:
defoctahedron():
"""Constructaneight-sidedpolyhedron"""f=sqrt(2.0)/2.0verts=numpy.float32([(0-10)(-f0f)(f0f)(f0-f)(-f0-f)(010)])triangles=numpy.int32([(021)(032)(043)(014)(512)(523)(534)(541)])returnverts[triangles]
4pyrr包渲染
接下来利用pyrr3维库渲染上面的原始数据,最后生成svg矢量图。
5生成svg
上面最后一步生成svg图形,需要调用下面的Engine函数,略微有些复杂:
以上代码全部封装到类中调用,就可以生成八面体图形了。
除了八面体还可以生成很多其他图形。
球体和Klein瓶
代码如下:
多面球体
代码如下:
发光的球体
代码实现:
还可以绘制这种曲面体
代码实现如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万万没想到Python 竟能绘制出如此酷炫的三维图 万万 没想到 Python 绘制 如此 三维