Algorithm 区域内反射光束交点的求法

Algorithm 区域内反射光束交点的求法,algorithm,computational-geometry,intersection,Algorithm,Computational Geometry,Intersection,我目前正在从事超声波检测相关项目。参考下图: 我用黑匣子作为探针,用两条黑线作为光束向外辐射,撞击底面并反射到与三角形边界相交(由黑点标记的交点)(由蓝线勾勒) 我知道,给定所有参数(如每条线的方程和光束角度),我可以用简单的三角法求解黑点的位置 然而,我的问题是,有没有更好/更先进的方法来解决此类问题?(例如,使用某种形式的卷绕数算法,类似于多边形中的点问题)。 我假设所有参数(光束的角度、探头和三角形的准确位置和方向)都是已知的。我认为这里没有什么不寻常的地方可以使用。交点的计算相当简单

我目前正在从事超声波检测相关项目。参考下图:

我用黑匣子作为探针,用两条黑线作为光束向外辐射,撞击底面并反射到与三角形边界相交(由黑点标记的交点)(由蓝线勾勒)

我知道,给定所有参数(如每条线的方程和光束角度),我可以用简单的三角法求解黑点的位置

然而,我的问题是,有没有更好/更先进的方法来解决此类问题?(例如,使用某种形式的卷绕数算法,类似于多边形中的点问题)。
我假设所有参数(光束的角度、探头和三角形的准确位置和方向)都是已知的。

我认为这里没有什么不寻常的地方可以使用。交点的计算相当简单

x方向从左到右,y方向从下到上,假设底部水平线位于
y1
,顶部位于
y2
,我们有两条线段,两条线段的起点/终点的x坐标如图所示:

        x4     x2
y2 -------------------
         \    /
          \  /
           \/
           /\
          /  \
         /    \
        /      \
y1 -------------------
       x1      x3
两条线段的参数化形式为:

( x1 + t1 * (x2 - x1), y1 + t1 * (y2 - y1) )
( x3 + t2 * (x4 - x3), y1 + t2 * (y2 - y1) )
求出两个点相同的
t1
t2
的值来计算交点。通过将两个y值设置为相等,我们可以很快看到
t1
t2
必须相等:

y1 + t1 * (y2 - y1) = y1 + t2 * (y2 - y1)
t1 * (y2 - y1) = t2 * (y2 - y1)
t1 = t2
知道了这一点,我们可以用
t1
代替
t2
,将x值设置为相等,然后求解
t1
的方程:

x1 + t1 * (x2 - x1) = x3 + t1 * (x4 - x3)
t1 * ((x2 - x1) - (x4 - x3)) = x3 - x1
t1 = (x3 - x1) / ((x2 - x1) - (x4 - x3))
一旦计算了t1,就知道如果线段的值介于0.0和1.0之间,则线段相交。如果是,则将交点
(xt,yt)
代入其中一个线段方程,即可获得交点
。然后整个过程变成(伪代码):

t1=(x3-x1)/((x2-x1)-(x4-x3))

如果t1>=0.0和t1,我就明白了,但我真的不明白为什么两行的t是一样的?是的,我相信这个结果是正确的,但我推导它的方法并不干净。我更新了答案。我希望这更有意义。谢谢。这很有帮助。好奇的是,这是计算机图形学中计算直线交点的标准方法吗?我不会想到用方程的参数化形式来解决这个问题。
t1 = (x3 - x1) / ((x2 - x1) - (x4 - x3))
if t1 >= 0.0 and t1 <= 1.0
    xi = x1 + t1 * (x2 - x1)
    yi = y1 + t1 * (y2 - y1)
else
    no intersection