【发布时间】:2014-03-25 08:55:34
【问题描述】:
我今天注意到我可以给 C++ 向量或数组一个浮点值作为索引。
(例如tab[0.5f])
这个 Float 值将被转换为 Int 值,然后给我与tab[0] 相同的结果。
这种行为对我来说并不有趣,因为我正在寻找一种方法来以最快的方式访问对象,具体取决于浮点键。 是否可以通过浮点索引保持数组/向量的访问速度?
我知道我的键会出现不准确的问题,但我希望我的浮点值最多能保持 3 位数的精度。
Map<Float, Object> 会做这项工作吗?我在 C++ 参考文档中读到 Map 访问是“对数大小”,这对我来说吸引力不大。
谢谢你:)。
编辑:
我需要将包含 X 个共享顶点的网格 M 转换为包含 X' 个非共享顶点的网格 M'。 顶点的索引设置在 M 中,我知道它处于 TRIANGLE 模式。
我目前的算法是:
对于 M.indexes 中的 i,i+3
取 3 个索引,并推导出它们指向的顶点(得到三角形的 3 个顶点)
计算这些顶点的法线
检查每对 {Vertex_i, Normal}(i 在 1 和 3 之间,我的 3 个顶点)是否已经存储了这对夫妇,并采取相应措施
...后续步骤
为了检查这对 {Vertex,Normal},我使用基于顶点位置的 Array[x][y][z],它是一个浮点数,虽然我知道它不会超过 3digits 精度.
【问题讨论】:
-
你能给我们一个令人信服的场景,说明你为什么想要一个浮动索引吗?还是您只是想将范围映射到键/索引?
-
如果您希望浮点数最多保留 3 位数字 - 然后将其乘以 1000 并使用整数索引。因为即使是一个数字后,您也会遇到不准确的问题。
-
您的按键的范围和精度是多少?
-
我需要将包含 X 个共享顶点的网格 M 转换为包含 X' 个非共享顶点的网格 M'。顶点的索引设置在 M 中,我知道它处于 TRIANGLE 模式。我目前的算法是:对于 M.indexes 中的 i,i+3 - 取 3 个索引,并推导出它们指向的顶点(三角形) - 在这些顶点上计算法线 - 检查每一对 {Vertex_i,Normal}(i 介于1 和 3,我的 3 个顶点)如果我已经有了这对夫妇 - ... 下一步要检查这对夫妇 {Vertex,Normal},我使用基于顶点位置的 t[x][y][z],它可以是浮点数
-
哇,没想到我的评论格式这么差。对此感到抱歉。
标签: c++