两个3D表面之间的交点

时间:2017-11-22 08:33:40

标签: matlab math geometry computational-geometry intersection

我有两个独立的3D形状;一个是正​​方形而另一个是圆锥形。

让我们假设圆锥位于正方形内。当我向任何方向移动圆锥体时,如何发现圆锥体表面接触方形表面?

如果有人能提出算法来检查表面是否接触另一种形状,将会很有帮助。

我正在使用MATLAB,但基础逻辑将受到任何语言的赞赏。

https://in.mathworks.com/matlabcentral/answers/367565-findout-surface-to-surface-intersection-between-two-3d-shapes

1 个答案:

答案 0 :(得分:0)

有一个相对简单的解决方案,因为截头圆锥是凸形的,并且发现它的AABB并不那么难。

首先旋转空间,使立方体成轴对齐(并且锥体处于任意位置)。然后找到基数的AABB,使用参数方程C + R cos t + R'sin t得到最大值坐标的最小值就足够了,其中C是中心的位置矢量,R, R'两个正交半径。您可以通过取消导数找到极限角度。

在三个坐标上找到极值后,全局边界框围绕这六个点加上顶点。

通过将AABB与立方体进行比较,您可以在任何方向上判断碰撞前剩余的距离。

enter image description here