通常我们用 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 竟能绘制如此酷炫的三维图相关推荐

  1. 用python画漂亮图片-Python 竟能绘制如此酷炫的三维图

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  2. python画3d图-Python 竟能绘制如此酷炫的三维图

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  3. python三维图形渲染-Python 竟能绘制如此酷炫的三维图

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  4. Python 绘制出酷炫的三维图

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  5. python画三维立体图-Python 竟能绘制出如此酷炫的三维图

    原标题:Python 竟能绘制出如此酷炫的三维图 通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维 ...

  6. python怎样画立体图-Python 竟能绘制出如此酷炫的三维图

    原标题:Python 竟能绘制出如此酷炫的三维图 作者 | Jay Alammar 译者 | 高级农民工 通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: ...

  7. python画三维平面-Python 绘制酷炫的三维图步骤详解

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  8. python画三维温度散点图-Python 绘制酷炫的三维图步骤详解

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  9. python画三维散点图-Python 绘制酷炫的三维图步骤详解

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

最新文章

  1. springmvc原理详解(手写springmvc)
  2. androidstudio mac mini_GitHub - jp1017/AndroidStudioPlugins: Android Studio 常用插件及浅释
  3. Xcode7将无需开发者授权也能在真机上调试App
  4. Spring配置文件中的细节
  5. python 数组赋值_pythonamp;numpy的赋值
  6. Java 3D编程实践_Java 3D编程实践——网络上的三维动画[学习笔记]
  7. [导入]如何点击按钮弹出新窗口,输入数据后返回并刷新页面?(老孟)
  8. python 日志函数参数_Python之配置日志模块logging
  9. 网络:简述传统CPE向VCPE的演进
  10. java中模糊查询sql怎么写_java模糊查询sql语句
  11. 计算机指纹驱动程序,联想笔记本指纹识别驱动安装教程【详解】
  12. Markdown基本语法(摘录)
  13. SwiftUI 设置圆角、边框
  14. 上传ipa到appstore的步骤说明​
  15. VS Code下载,安装,汉化
  16. 云平台和云管平台的三大区别详细解析
  17. 《MFC如何屏蔽ESC和Enter按键退出应用程序》
  18. 比特率 波特率 数据传输速率 区别;波特率与比特率--转换公式
  19. ei eo 功能类型_[转载]CMMI之功能点估算法:EI、EQ和EO
  20. 思科模拟器:通过一台三层交换机及两台二层交换机和6台电脑划分3个VLAN,并建立三个网关让电脑之间互通

热门文章

  1. windoes服务器搭建Jenkins和部署war项目
  2. c语言指针变量的定义数组的长度,【C语言更新】指向数组的指针
  3. Android(IPC)进程间通讯1:详解Binder由来?
  4. 第三章 Python函数
  5. Memcache持久性分布式数据MemcacheDB
  6. opencv中Mat与IplImage,CVMat类型之间转换
  7. Android JNI层确保只有一个进程的一个实现
  8. android-swipelistview的开源项目的配置
  9. 关于页面文件路径的问题
  10. wordpress汉化技巧_保护您的WordPress网站的6个技巧