Python 竟能绘制如此酷炫的三维图
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的:
这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图。
八面体
我们先以下面这个八面体为例。
1 安装相关包
首先安装两个必备包:
import pyrr # NumPy 的 3D 函数库
import svgwrite # svg图形处理库
2 定义 3D 图生成环境
接下来定义几个类设置好 3 维图基础环境:
viewport :矩形图范围
camera:包括视图矩阵和投影矩阵
mesh:svg 矢量图所需的网格表面矩阵、着色器和样式字典
3 生成八面体数据
然后生成八面体每个定点的数据:
def octahedron():"""Construct an eight-sided polyhedron"""f = sqrt(2.0) / 2.0verts = 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 矢量图。
5 生成 svg
上面最后一步生成 svg 图形,需要调用下面的 Engine 函数,略微有些复杂:
以上代码全部封装到类中调用,就可以生成八面体图形。
除了八面体还可以生成很多其他图形。
球体和 Klein 瓶
代码如下:
多面球体
代码如下:
发光的球体
代码实现:
还可以绘制这种曲面体
代码实现如下:
END.
作者: Jay Alammar
链接:https://jalammar.github.io/visual-numpy/
本文版权归作者和博客园共有,欢迎转载(个人微信:qqguai001),但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。(尊重别人就是尊重自己,尊重笔者的劳动哦,转载请说明出处哦,商用请征得作者本人同意,谢谢!!!)
转载于:https://www.cnblogs.com/suke1900/p/11176117.html
Python 竟能绘制如此酷炫的三维图相关推荐
- 用python画漂亮图片-Python 竟能绘制如此酷炫的三维图
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...
- python画3d图-Python 竟能绘制如此酷炫的三维图
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...
- python三维图形渲染-Python 竟能绘制如此酷炫的三维图
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...
- Python 绘制出酷炫的三维图
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...
- python画三维立体图-Python 竟能绘制出如此酷炫的三维图
原标题:Python 竟能绘制出如此酷炫的三维图 通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维 ...
- python怎样画立体图-Python 竟能绘制出如此酷炫的三维图
原标题:Python 竟能绘制出如此酷炫的三维图 作者 | Jay Alammar 译者 | 高级农民工 通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: ...
- python画三维平面-Python 绘制酷炫的三维图步骤详解
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...
- python画三维温度散点图-Python 绘制酷炫的三维图步骤详解
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...
- python画三维散点图-Python 绘制酷炫的三维图步骤详解
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...
最新文章
- springmvc原理详解(手写springmvc)
- androidstudio mac mini_GitHub - jp1017/AndroidStudioPlugins: Android Studio 常用插件及浅释
- Xcode7将无需开发者授权也能在真机上调试App
- Spring配置文件中的细节
- python 数组赋值_pythonamp;numpy的赋值
- Java 3D编程实践_Java 3D编程实践——网络上的三维动画[学习笔记]
- [导入]如何点击按钮弹出新窗口,输入数据后返回并刷新页面?(老孟)
- python 日志函数参数_Python之配置日志模块logging
- 网络:简述传统CPE向VCPE的演进
- java中模糊查询sql怎么写_java模糊查询sql语句
- 计算机指纹驱动程序,联想笔记本指纹识别驱动安装教程【详解】
- Markdown基本语法(摘录)
- SwiftUI 设置圆角、边框
- 上传ipa到appstore的步骤说明​
- VS Code下载,安装,汉化
- 云平台和云管平台的三大区别详细解析
- 《MFC如何屏蔽ESC和Enter按键退出应用程序》
- 比特率 波特率 数据传输速率 区别;波特率与比特率--转换公式
- ei eo 功能类型_[转载]CMMI之功能点估算法:EI、EQ和EO
- 思科模拟器:通过一台三层交换机及两台二层交换机和6台电脑划分3个VLAN,并建立三个网关让电脑之间互通