【发布时间】:2009-06-14 17:06:31
【问题描述】:
我目前正在构建一个在星球上的游戏,我计划存储数据的方式是 6 个二维数组,它们是球体周围的高度图(在立方体的面上) . 我遇到的问题是,给定一个从球体中心向外指向的归一化向量,我如何确定这两件事:
- 它相交的平面
- 我应该在二维数组中查找 x/y 坐标以获得高度。
我目前的解决方案是这样的(使用 XNA):
- 沿着提供的方向向量构造一条从 [0,0] 指向的射线。遍历每个表面并进行射线/平面相交(这是 XNA 框架提供的一种方法),以获得到相交点的距离。选择最近的平面(到交叉点的最短距离)
- 获取 3D 点,并将其转换为 2D 点,该点可用作数组查找来查找半径(这是我无法计算出数学或通过 google 找到任何引用的位)。
一个有用的约束是球体/立方体系统在原点周围。
那么,需要解决的问题是: 给定一个方向向量,我如何确定它与周围立方体相交的位置。使用这个结果,我如何在这个立方体的表面上“绘制”的二维数组中获得正确的值?
【问题讨论】:
-
Martin,您能否编辑您的帖子以包含更明确的问题?
-
当然,我想这不是很清楚。
-
您应该从一个立方体开始并对其进行镶嵌。如果您的球体是从三角函数派生的,您可能会注意到一个奇点(景观将在两极“挤压”)。如果你这样做,你的映射问题就会消失。
-
这种情况下的球体实际上并不存在,我只是得到了一个单位向量数据集,我想将它们映射到一个立方体上以便于存储(6 个立方体面,每个都是 2d数组)