在Gino Van Den Bergen的2004年论文Ray Casting against General Convex Objects with Application to Continuous Collision Detection中,他首先提出了一种天真的迭代方法来准备他的讨论:
Algorithm 1 An iterative method for performing a ray cast of a ray s+λr against
a convex object C. For positive results, this algorithm terminates with λ being the
hit parameter, x, the hit spot, and n, the normal at x.
λ ← 0;
x ← s;
n ← 0;
c ← “the point of C closest to x”;
while not “x is close enough to c” do
begin
n ← x − c;
if n · r ≥ 0 then return false
else
begin
λ ← λ − (n · n)/(n · r);
x ← s + λr;
c ← “the point of C closest to x”
end
end;
return true
然后他说:
属性λi&lt; λi+1≤λhit是必要的但尚不充分 全球趋同的条件。为了表明,如果是 命中,xi确实接近i→∞的命中点,我们需要证明这一点 从λi到λi+ 1的映射在所有λ<λhit处是连续的。
然而,对于至少实数,λ的序列单调增加并且在上面有界的事实是收敛的充分条件。我不确定为什么他需要证明连续性?
答案 0 :(得分:0)
如果某个时刻存在奇点,那么λi+ 1可能会渐近逼近它,但永远无法超越它。对于精度有限的数字,它只是意味着λ将停止增加。
编辑:好吧我想我想出了一个类似算法可能无法收敛的例子。让我们假设我们的进步策略更加谨慎:一旦我们找到最接近的点c,我们将λ推进到最接近c的光线上的点,即λi+ 1 =λi - (n·r)/ 2,并且另外,物体不是完全凸起的,而是有一个洞:
AB = AC,所以在A处有一个奇点。我们的新算法将接近A,但是永远不会到达它并且能够跳到C(因为它每次仅移动一半),然而λ将稳定地增加到任何一点。
编辑2:由于A是一个奇点,n·r实际上会在那里得到0,所以我不确定它是否会破坏参数:)也许不是如果我们确切地定义在A,C将被选中作为最接近的点而不是B