如何创建一个 numpy 数组来描述三角形的顶点?

2024-04-18

我喜欢使用 Numpy 创建要传递到的顶点数组glsl.

Vertices将是一个包含 3 个顶点信息的 numpy 数组。

Each vertex包括:

  1. pos = (x, y)具有 32 位的 64 位有符号浮点格式 R 分量位于字节 0..3 中,32 位 G 分量位于字节 4..7 中, 和
  2. color = (r, g, b)96 位有符号浮点格式 32 位 R 分量(以字节 0..3 为单位),32 位 G 分量(以字节为单位) 4..7,以及字节 8..11 中的 32 位 B 分量

即每个vertex = (pos, color) = ( (x, y), (r, g, b) )

三角形有 3 个顶点,所以最后我需要一个 1D numpy 数组来描述

Vertices = [vertex1, vertex2, vertex3]
         = [ ( (x, y), (r, g, b) ), 
             ( (x, y), (r, g, b) ), 
             ( (x, y), (r, g, b) ) ] 

我怎样才能创建Vertices在numpy中?下面的语法看起来是错误的。

Vertices = np.array([( (x1, y1), (r1, g1, b1) ), 
                     ( (x2, y2), (r2, g2, b2) ), 
                     ( (x3, y3), (r3, g3, b3) )], dtype=np.float32)

每个的字节大小vertex应为 64/8 + 96/8 = 8 + 12 = 20 字节。 字节大小为Vertices应为 20 字节 x 3 = 60 字节。


这很简单,在numpy实际上。使用结构化数组 https://docs.scipy.org/doc/numpy/user/basics.rec.html:

In [21]: PosType = np.dtype([('x','f4'), ('y','f4')])

In [22]: ColorType = np.dtype([('r','f4'), ('g', 'f4'), ('b', 'f4')])

In [23]: VertexType = np.dtype([('pos', PosType),('color', ColorType)])

In [24]: VertexType
Out[24]: dtype([('pos', [('x', '<f4'), ('y', '<f4')]), ('color', [('r', '<f4'), ('g', '<f4'), ('b', '<f4')])])

In [25]: VertexType.itemsize
Out[25]: 20

然后简单地:

In [26]: vertices = np.array([( (1, 2), (3, 4, 5) ),
    ...:                      ( (6, 7), (8, 9, 10) ),
    ...:                      ( (11, 12), (13, 14, 15) )], dtype=VertexType)

In [27]: vertices.shape
Out[27]: (3,)

和基本索引:

In [28]: vertices[0]
Out[28]: (( 1.,  2.), ( 3.,  4.,  5.))

In [29]: vertices[0]['pos']
Out[29]: ( 1.,  2.)

In [30]: vertices[0]['pos']['y']
Out[30]: 2.0

In [31]: VertexType.itemsize
Out[31]: 20

numpy曾经提供记录数组,因此您可以使用属性访问而不是索引:

In [32]: vertices = np.rec.array([( (1, 2), (3, 4, 5) ),
    ...:                          ( (6, 7), (8, 9, 10) ),
    ...:                          ( (11, 12), (13, 14, 15) )], dtype=VertexType)

In [33]: vertices[0].pos
Out[33]: (1.0, 2.0)

In [34]: vertices[0].pos.x
Out[34]: 1.0

In [35]: vertices[2].color.g
Out[35]: 14.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建一个 numpy 数组来描述三角形的顶点? 的相关文章

随机推荐

  • 使用 Sharepoint 事件接​​收器在文档库中创建文件夹

    我使用以下代码在文档库中创建一个文件夹 该事件被触发并执行到我的代码的最后一行 没有任何问题 但是 该文件夹未在我的文档库中创建或列出 public override void ItemAdded SPItemEventProperties
  • 如何在javascript中处理(® ´ © ¿ ¡ ° À ) 特殊字符?

    我需要开发一个 javascript 函数 不允许字符串中出现特殊字符 问题是IE8无法识别字符串中的特殊字符 并且在使用indexOf 方法时返回 1 处理这些特殊字符的正确方法是什么 只要您的所有编码都是正确的 您是否将文件另存为 UT
  • numpy 的花式索引是如何实现的?

    我正在对 2D 列表和 numpy 数组进行一些实验 由此 我提出了三个我很想知道答案的问题 首先 我初始化了一个 2D python 列表 gt gt gt my list 1 2 3 4 5 6 7 8 9 然后我尝试用元组索引列表 g
  • 收到错误:WebSphere MQ 原因代码 2538?

    我在 Linux 上安装了 WebSphere MQ 和 WebSphere Message Broker 当我执行mqsicreateexecutiongroup我收到一条错误消息 BIP1046E 无法连接到队列管理器 无法连接到队列管
  • Laravel 5 强制使用 HTTPS 登录路由到 HTTP 的问题

    Laravel 版本 Laravel 5 4 30 我遇到一个问题 我的生产代码托管在通过 HTTPS 提供服务的负载均衡器后面的 AWS Elastic Beanstalk 上 当使用内置的 auth 特征和 make auth 控制器来
  • 在 Android 上将游戏资源下载到 SD 卡

    我正在开发一个安卓游戏必须下载一些assets to the SD card使应用程序的大小尽可能小 我正在考虑使用未压缩的zip文件来捆绑所有资产 客户的一个要求是protect尽可能多地使用这些资产 作为 apk 的一部分被认为是足够的
  • Android Twilio 视频通话,唤醒应用程序并带到前台

    我正在尝试使用 Twilio Video Call 提供本机视频通话体验 这是场景 人 AAA 称人 BBB BBB 没有打开应用程序 在后台或前台 应用程序处于终止状态 手机甚至可能被锁定 当来自 AAA 的电话到达时 应用程序将打开 并
  • 投影 - 将 3d 转换为 2d

    我有问题或者很好 我不知道如何将具有 x y z 值的 3d 点转换为 2d 点 我必须绘制投影 其中我确实有点的 x y z 值 但我不知道如何将它们转换为 2d 以便我可以将它们移动到我的轴上 我一直在浏览维基和谷歌 但是我不太确定应该
  • Networkx中的多层图

    我想创建一个多层图 如附图所示 通过连接用以下代码编写的两个图 使用networkx Graph g1 nx read edgelist sample txt nodetype str pos nx shell layout g plt f
  • 春季启动。如何禁用 JPA 有条件初始化

    如果可以完全禁用 JPA Stack 的初始化 我会很伤心 在某些情况下 我的应用程序是在无法访问数据库的环境中执行的 应用程序可以在应用程序级别上幸存下来 但从技术上讲 我在数据源的初始化方面遇到了一些异常 必须有某种方法来完全禁用 JP
  • scala 中的reduceLeft(或foldLeft)与reduceRight(或foldRight)

    我正在从 coursera 学习 scala 在里面reduceLeft and reduceRight描述如下 然后在下一张幻灯片上 老师说这个代码模式被抽象为reduceLeft 我的问题 我认为第一张幻灯片中的模式是reduceRig
  • 寻找包含当前节点的 jQuery find(..) 方法

    jQueryfind http api jquery com find 遍历方法不包括当前节点 它从当前节点的子节点开始 调用将当前节点包含在其匹配算法中的查找操作的最佳方法是什么 浏览文档并没有立即引起我的注意 对于 jQuery 1 8
  • Symfony2 php.ini

    当检查时app check php Symfony2说这个Configuration file used by PHP etc php5 cli php ini然而phpinfo 显示 Apache 正在使用 etc php5 apache
  • 如何让两个模型互相引用 Django

    我有以下代码 class Game models Model title models CharField max length 50 summery models CharField max length 500 key models I
  • Laravel 5 将数据从中间件传递到控制器

    我的中间件类似于Auth 它检查 URL 模式 例如 rest 然后在请求中查找令牌 从数据库中检索其相应的用户 之后 我想将该用户保存在一个变量中 以便稍后可以在以下任何控制器中返回该用户 最好的办法是什么 中间件 public func
  • LINQ 删除重复项和结果项以获得数量总和

    我只是想检查是否有更快的方法使用 LINQ 通过 id 从重复项中删除列表 但在结果列表项中将具有一些其他属性的总和 在本例中为价格 例如 起始列表 List
  • 通过 Open Graph API 以编程方式创建 Facebook 页面

    我希望有一种方法可以使用开放图 API 创建 Facebook 页面 该文档仅显示页面存在后我可以进行的 API 调用 目前 我的网站上有电影简介 我想在 Facebook 上为每个电影简介创建一个页面 我知道我可以添加 赞 按钮 一旦单击
  • @Transactional 和 AOP 之间的混淆

    Transactional 是否在 Spring 3 中替代了 AOP 它们相同吗 我可以说 Transactional在内部实现了AOP吗 The Transactionnal注释只是声明方法 或类的所有方法 是事务性的简单方法 Spri
  • 检测 MATLAB 帮助浏览器

    我想为大型 MATLAB 应用程序创建一些 HTML 文档 主要在 MATLAB 帮助浏览器 从 11b 开始的任何版本的 MATLAB 中 查看 这将有一些自定义 CSS 但没有什么非常复杂的 但是 我还希望在其他浏览器中可以查看相同的文
  • 如何创建一个 numpy 数组来描述三角形的顶点?

    我喜欢使用 Numpy 创建要传递到的顶点数组glsl Vertices将是一个包含 3 个顶点信息的 numpy 数组 Each vertex包括 pos x y 具有 32 位的 64 位有符号浮点格式 R 分量位于字节 0 3 中 3