Python 绘制酷炫的三维图步骤详解


Posted in Python onJuly 12, 2019

通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的:

Python 绘制酷炫的三维图步骤详解

这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图。

八面体

我们先以下面这个八面体为例。

Python 绘制酷炫的三维图步骤详解

1 安装相关包

首先安装两个必备包:

import pyrr # NumPy 的 3D 函数库
import svgwrite # svg图形处理库

2 定义 3D 图生成环境

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

Python 绘制酷炫的三维图步骤详解

viewport :矩形图范围

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

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

3 生成八面体数据

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

def octahedron():
  """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) ])
  return verts[triangles]

4 pyrr 包渲染

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

Python 绘制酷炫的三维图步骤详解

5 生成 svg

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

Python 绘制酷炫的三维图步骤详解

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

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

球体和 Klein 瓶

Python 绘制酷炫的三维图步骤详解

代码如下:

Python 绘制酷炫的三维图步骤详解

多面球体

Python 绘制酷炫的三维图步骤详解

代码如下:

Python 绘制酷炫的三维图步骤详解

发光的球体

Python 绘制酷炫的三维图步骤详解

代码实现:

Python 绘制酷炫的三维图步骤详解

还可以绘制这种曲面体

Python 绘制酷炫的三维图步骤详解

代码实现如下:

Python 绘制酷炫的三维图步骤详解

总结

以上所述是小编给大家介绍的Python 绘制酷炫的三维图,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python自定义装饰器原理与用法实例分析
Jul 16 Python
Pycharm远程调试原理及具体配置详解
Aug 08 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
jupyter notebook读取/导出文件/图片实例
Apr 16 Python
Python如何重新加载模块
Jul 29 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
解决python 输出到csv 出现多空行的情况
Mar 24 Python
pytorch 一行代码查看网络参数总量的实现
May 12 Python
pytorch Dropout过拟合的操作
May 27 Python
Python使用BeautifulSoup4修改网页内容
May 20 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 #Python
python实现简单聊天室功能 可以私聊
Jul 12 #Python
pyinstaller参数介绍以及总结详解
Jul 12 #Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 #Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 #Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 #Python
Django中celery执行任务结果的保存方法
Jul 12 #Python
You might like
php,不用COM,生成excel文件
2006/10/09 PHP
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
Python 读写文件的操作代码
2018/09/20 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
Joules美国官网:出色的英国风格
2017/10/30 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
xxx同志考察材料
2014/02/07 职场文书
网络编辑职责
2014/03/01 职场文书
竞选村长演讲稿
2014/04/28 职场文书
七一党日活动总结
2014/07/08 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
酒店员工手册范本
2015/05/14 职场文书
师范生见习总结范文
2015/06/23 职场文书
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL