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中用于检查英文字母大写的isupper()方法
May 19 Python
python正则表达式之作业计算器
Mar 18 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
Python求解任意闭区间的所有素数
Jun 10 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
详解python中list的使用
Mar 15 Python
python装饰器使用实例详解
Dec 14 Python
python打印异常信息的两种实现方式
Dec 24 Python
将数据集制作成VOC数据集格式的实例
Feb 17 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 动态多文件上传
2009/01/18 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
python判断是空的实例分享
2020/07/06 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
应届毕业生个人自荐信范文
2013/11/30 职场文书
英语专业毕业生自荐信范文
2013/12/31 职场文书
创业资金计划书
2014/02/06 职场文书
导师评语大全
2014/04/26 职场文书
农村党员一句话承诺
2014/05/30 职场文书
超市开店计划书
2014/09/15 职场文书
优秀教师申报材料
2014/12/16 职场文书
拾金不昧感谢信
2015/01/21 职场文书
2015年监理工作总结范文
2015/04/07 职场文书