我现在正致力于在空间中移动球体并与其他物体发生碰撞。解决球体和三角形(由我的多面体组成)的相交问题存在问题。
给定球心的坐标及其半径,以及三角形在空间中的三个点。您需要确定三角形是否与球体相交(通过其边或区域)。
更正式地说:给定一个点 O(x0, y0, z0) - 球体的中心。给定一个实数 r - 球体的半径。给出了三角形的三个顶点:A(x1, y1, z1), B(x2, y2, z2), C(x3, y3, z3)。有必要回答这个问题:三角形与球体是否至少有一个公共点?
我现在正致力于在空间中移动球体并与其他物体发生碰撞。解决球体和三角形(由我的多面体组成)的相交问题存在问题。
给定球心的坐标及其半径,以及三角形在空间中的三个点。您需要确定三角形是否与球体相交(通过其边或区域)。
更正式地说:给定一个点 O(x0, y0, z0) - 球体的中心。给定一个实数 r - 球体的半径。给出了三角形的三个顶点:A(x1, y1, z1), B(x2, y2, z2), C(x3, y3, z3)。有必要回答这个问题:三角形与球体是否至少有一个公共点?
推荐的行动顺序。
为简化计算,建议绕球心旋转,使三角形平面垂直于其中一条坐标线。
最简单的方法:
该任务可以简化为“确定 2D 图形和球是否具有共同点”的任务。
<= r
,则 2D 图形在球内。如果
n
点在里面,k
点在外面,在哪里n > 0
和k > 0
,那么 2D 图形与球相交。仍然需要考虑所有点都在外面的情况。很明显,只有在离圆心最近的点
ПЛОСКОСТИ ФИГУРЫ
在远处<= r
并且该点位于图中时,才会产生交点。如果前两个条件不满足,则检查<= r
是否所有的垂线都与线段相交,这些垂线是否切入线段。如果它们碰撞,以及长度<= r
(如果有的话,至少有一个),那么这个数字就会越过球。