Python 绘制酷炫的三维图步骤详解

 更新时间:2019年07月12日 15:38:00   作者:wade1900  
本文分步骤给大家介绍了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.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 矢量图。

5 生成 svg

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

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

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

球体和 Klein 瓶

代码如下:

多面球体

代码如下:

发光的球体

代码实现:

还可以绘制这种曲面体

代码实现如下:

总结

以上所述是小编给大家介绍的Python 绘制酷炫的三维图,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • Django之Mode的外键自关联和引用未定义的Model方法

    Django之Mode的外键自关联和引用未定义的Model方法

    今天小编就为大家分享一篇Django之Mode的外键自关联和引用未定义的Model方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 用Python实现2024年春晚刘谦魔术

    用Python实现2024年春晚刘谦魔术

    昨晚春晚上刘谦的两个魔术表演都非常精彩,忍不住用编程去模拟一下这个过程,所以本文给大家用Python实现2024年春晚刘谦魔术,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • 详解Python如何检查一个数字是否为科技数

    详解Python如何检查一个数字是否为科技数

    科技数(Tech Number)是一种在数学上具有一定特殊性质的数字,这篇文章主要为大家详细介绍了如何使用Python检查一个数字是否为科技数,感兴趣的可以了解下
    2024-03-03
  • python返回数组索引的方法实现

    python返回数组索引的方法实现

    本文介绍了三种在Python中返回数组索引的方法,主要包括index()方法,enumerate()方法及使用numpy库的argwhere()函数,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • python编程学习使用管道Pipe编写优化代码

    python编程学习使用管道Pipe编写优化代码

    大家好,今天这篇文章我将详细讲解 Pipe 如何让你的代码更加简洁的方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Python判断字符串是否为空和null方法实例

    Python判断字符串是否为空和null方法实例

    这篇文章主要介绍了Python判断字符串是否为空和null,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 实现Python图形界面框架TkInter写GUI界面应用简介过程操作

    实现Python图形界面框架TkInter写GUI界面应用简介过程操作

    TkInter是Python用于开发GUI界面的标准库,如果你想快速开发一个带有GUI界面的小工具(笑小程序),且又能同时在Linux、Windows、Mac上使用,TkInter天生支持跨平台,天生具备稳定性,我认为它能满足内部工具的简单需求
    2021-09-09
  • Python实现获取照片拍摄日期并重命名的方法

    Python实现获取照片拍摄日期并重命名的方法

    这篇文章主要介绍了Python实现获取照片拍摄日期并重命名的方法,涉及Python针对文件属性及文件名相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • Python解包中*和**的最全用法

    Python解包中*和**的最全用法

    本文主要介绍了Python解包中*和**的最全用法,它们具有多种用途,包括解包参数、扩展序列、字典和集合操作等,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • python对离散变量的one-hot编码方法

    python对离散变量的one-hot编码方法

    今天小编就为大家分享一篇python对离散变量的one-hot编码方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论