algorithm - 测试线段是否与球体相交

标签 algorithm intersection raytracing

我正在尝试确定线段(即两点之间)是否与球体相交。我对交点的位置不感兴趣,只关心线段是否与球面相交。有没有人对最有效的算法有什么建议? (我想知道是否有比通常的射线球相交算法更简单的算法,因为我对相交位置不感兴趣)

最佳答案

如果您只对知道它是否相交感兴趣,那么您的基本算法将如下所示...

假设您有射线的矢量 A -> B。

您知道该矢量与球心之间的最短距离出现在您的射线矢量与与该矢量成 90 度并通过球心的矢量的交点处。

因此你有两个向量,它们的方程式完全定义。您可以使用线性代数计算出向量的交点,从而计算出直线的长度(或更有效地计算直线长度的平方)并测试它是否小于半径(或半径的平方) 你的球体。

关于algorithm - 测试线段是否与球体相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2062286/

相关文章:

sql - 如何根据事件的日期、时间和持续时间检查 SQL 表中的平均并发事件?

ios - 在 Swift 中使用 UIBezierPath 添加两条路径

python - 如何计算由端点和弧上点给出的两条弧的交点?

graphics - 有效计算视线和一组对象之间的第一个交点的最佳方法是什么?

algorithm - photoshop 调色刀效果背后的算法是什么?

python-3.x - 递归memoization解决方案 "count changes"

typescript - 使用 any 键入交叉点

c# - Unity3d 霰弹枪锥形射击

opengl - 按顶点颜色为三角形着色的算法

algorithm - bool 网格的随机索引