我有一些 3D 平面信息。当所有平面连接在一起时,它将形成一个 3D 凸包。
这是一个输入示例。
每个 3D 平面由平面上的一个点及其法线表示。
所有法线都指向内部:-
- (-1,0,0) with normal = (1,0,0)
- ( 1,0,0) with normal = (-1,0,0)
- (0,-1,0) with normal = (0,1,0)
- (0,1,0) with normal = (0,-1,0)
- (0,0,-1) with normal = (0,0,1)
- (0,0,1) with normal = (0,0,-1)
- (0.142,-7.18,10.12) with normal = (0.001,0.31,-0.95)
- note: some planars can be redundant (contribute nothing) e.g. the last one
问题:如何从中计算AABB?
上述示例的解决方案是((-1,-1,-1),(1,1,1))
.
(起初,我想要质心,但我意识到这是一个 Hard 问题。AABB
对我来说应该足够好了。)
我糟糕的解决方案是使用构造实体几何找到所有船体顶点, 然后对它们执行 MIN 和 MAX,但性能太差了。
在实际情况下,我想在两个凸包重叠时找到 3D 包的中心点。
此信息可用于物理引擎中更准确的碰撞响应。