我正在尝试确定线段(即两点之间)是否与球体相交。我对交点的位置不感兴趣,只关心线段是否与球面相交。有没有人对最有效的算法有什么建议? (我想知道是否有比通常的射线球相交算法更简单的算法,因为我对相交位置不感兴趣)
最佳答案
如果您只对知道它是否相交感兴趣,那么您的基本算法将如下所示...
假设您有射线的矢量 A -> B。
您知道该矢量与球心之间的最短距离出现在您的射线矢量与与该矢量成 90 度并通过球心的矢量的交点处。
因此你有两个向量,它们的方程式完全定义。您可以使用线性代数计算出向量的交点,从而计算出直线的长度(或更有效地计算直线长度的平方)并测试它是否小于半径(或半径的平方) 你的球体。
关于algorithm - 测试线段是否与球体相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2062286/