原标题:Python 竟能绘制出如此酷炫的三维图

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

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

八面体

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

1 安装相关包

首先安装两个必备包:

importpyrr# NumPy 的 3D 函数库

importsvgwrite# svg图形处理库

2 定义 3D 图生成环境

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

viewport :矩形图范围

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

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

3 生成八面体数据

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

defoctahedron():

"""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) ])

returnverts[triangles]

4 pyrr 包渲染

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

5 生成 svg

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

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

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

球体和 Klein 瓶

代码如下:

多面球体

代码如下:

发光的球体

代码实现:

还可以绘制这种曲面体

代码实现如下:

责任编辑:

python画三维立体图-Python 竟能绘制出如此酷炫的三维图相关推荐

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

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

  2. python画三维立体图难吗_万万没想到,Python竟能绘制出如此酷炫的三维图

    作者 | Jay Alammar转载自 | 高级农民工 通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制 ...

  3. python绘制3d图形-万万没想到,Python 竟能绘制出如此酷炫的三维图

    作者 | Jay Alammar 译者 | 高级农民工 通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制 ...

  4. Python 竟能绘制出如此酷炫的三维图

    点击上方"高级农民工",选择"星标"公众号 第一时间速享原创干货 作者 | Jay Alammar 译者 | 高级农民工 通常我们用 Python 绘制的都是二 ...

  5. python画三维立体图-Python 绘制酷炫的三维图步骤详解

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

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

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

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

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

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

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

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

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

最新文章

  1. 一流的管理者,都具备非凡的洞察力
  2. DropDownList--下拉菜单
  3. go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。
  4. java post 提交数据_使用Post方式提交数据到Tomcat服务器的方法
  5. Base PyQt4, Simple Web APP Framwork
  6. Springmvc接收json数据的4种方式
  7. 软化边硬化边_夏天多给小朋友吃它,蛋白质是牛肉的3倍,老人吃还能软化血管...
  8. php redirect with post,试图理解Post / Redirect / Get设计模式(用PHP实...
  9. JAXB实现java对象与xml之间转换
  10. 使用其它模块的头文件
  11. Linux中tty框架与uart框架之间的调用关系剖析
  12. numpy在对数组进行“行过滤“的时候,使用集合运算函数比使用逻辑运算函数更简单
  13. 高尔顿钉板 matlab,高尔顿钉板试验模拟
  14. python策略模式的应用_策略模式-Python四种实现方式
  15. 蓝牙设备类型cod(蓝牙class of device介绍)
  16. 专访王博,国内资深游戏3D角色美术大神
  17. AD仿真功能描述文档
  18. web前端开发新技术,CSS介绍
  19. re2c使用小结(2)
  20. 小程序获取sessionkey_微信小程序 获取session_key和openid的实例

热门文章

  1. oracle查看临时表空间文件,Oracle-临时表空间
  2. https ddos检测——研究现状
  3. 杨子见歧路而哭之——有的路必须自己去走
  4. Reroute Unassigned Shards——遇到主shard 出现的解决方法就是重新路由
  5. 华为FusionSphere概述——计算资源、存储资源、网络资源的虚拟化,同时对这些虚拟资源进行集中调度和管理...
  6. pyhton3 json.dumps 去除空格
  7. 【C/C++应用实例】基于线性结构的1KB内存IC存储模拟展示(C/C++)
  8. IOS 关于NSString类型的属性为什么有时用copy,有时用strong呢?
  9. 认识Backbone (四)
  10. C# 二种方法控制系统音量/麦克风大小