【发布时间】:2018-01-13 19:17:39
【问题描述】:
我有一个函数可以检测光线是否与对象相交,但它使用对象中心周围的半径,我希望它与边界框一起使用,我想给它 2 Vector3D 的边界框,以及射线原点的一个向量和射线的方向之一,它会计算是否有交叉点,有人可以帮我吗?这个的数学公式是什么?
intersectRay(origin:Vector3D, dir:Vector3D):
【问题讨论】:
-
信息不足。 (1) 你说的是 2D 还是 3D? (2) 即使是更简单的 2D 情况,边界框也是一个矩形 (x,y,width,height),而射线由原点 (x,y) 和方向向量 (x,y) 表示。如果是3D,那么bounding box应该是(x,y,z,width,height,depth),ray分别是原点(x,y,z)和方向(x,y,z)。
-
您应该将该功能填充到您的边界框类中。 2D 边界框并不总是与轴对齐(例如,它可以转动),对于 3D,给定的 3D 框有 3 个可能的转动。如果你的盒子都是轴对齐的,那么你就有足够的数据来组成一个检查器。有一些 C++ 实现这样的检查,找到一个,适应和使用。没有确切的公式,但在 XY、XZ 和 YZ 中进行 3 次检查并进行比较。
-
我说的是3d,我想创建一个边界框作为对象的简化,在3DMax中,边界框将有8个向量但它们不一定是a的形状框,我想找到一个简单的公式来从相机发送一条带有原点和方向的光线,该公式将检查光线是在边界框内还是在边界框外交叉
-
真相是我需要它在 2D 中,我想使用角度计算命中,我会找到边界框的最左边和最右边的点并计算从原点开始的角度的射线到两个点,然后我会知道在 x 轴上击中目标的角度范围,然后我会在 y 轴上做同样的事情,我不能使用我不使用的太复杂的数学'不明白,我现场没有太多物体,我只检查日落事件。我所需要的只是一个函数,它将给出 x 轴上 2 个点和 y 轴上另一个度数之间的度数。
-
这样我将 3D 问题投影到 2D 平面上,我现在需要做的就是找到外部点,用线将它们连接成一个封闭的形状,然后看看鼠标是否被选中形状内部或外部的一个点。
标签: actionscript-3 flash apache-flex stage3d