我熟悉BSP,KD-tree和BVH用于一般射线 - 原始交叉点发现问题。是否有更有效的算法和数据结构来查找仅一个球体和多个线段之间的交叉点?请注意,球体是查询对象。
答案 0 :(得分:0)
一种解决方案是:
假设
const $modalVideoPreviewIframeClone = $modalVideoPreviewIframe.attr('src', 'about:blank').clone();
$modalVideoPreviewIframe.replaceWith($modalVideoPreviewIframeClone);
$modalVideoPreviewIframe = $modalVideoPreviewIframeClone;
$modalVideoPreviewIframe.attr('src', sessionPreviewVideoId && `https://www.youtube.com/embed/${sessionPreviewVideoId}?autoplay=1`);
,其中心位于R
点,C
和P0
,P1
是D0
和C
之间的距离,以及P0
是D1
和C
之间的距离。然后:
如果P1
和D0 < R
,则线段完全包含在球体内部且不与曲面相交。
如果D1 < R
xor D0 < R
,则线段与球体表面相交。
否则,这些点位于球体外部,但该线可能与曲面相交,因此请运行常规的射线球相交测试。
进一步的优化是将平方距离与平方半径进行比较,以避免取根。