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中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
Python统计单词出现的次数
Apr 04 Python
Python实现ping指定IP的示例
Jun 04 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
使用python爬取微博数据打造一颗“心”
Jun 28 Python
python创建学生管理系统
Nov 22 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
pycharm激活方法到2099年(激活流程)
Sep 22 Python
Python中rapidjson参数校验实现
Jul 25 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
研究生自我鉴定范文
2013/10/30 职场文书
工商企业管理实习自我鉴定
2013/12/04 职场文书
项目副经理岗位职责
2013/12/30 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
留学推荐信范文
2014/05/10 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python
服务器nginx权限被拒绝解决案例
2022/09/23 Servers