2015-09-30 239 views
0

我有两个问题,第一条如何计算两条线之间的最小距离。 有关详细信息,请在此处附上图像。计算两条线和两条弧之间的最小距离

enter image description here

在图像描述与开始和结束点的直线。我已经有两条线的起点和终点,但我不知道如何计算两条线之间的最小距离。

另一个问题是如何计算两个弧之间的最小距离。 我在这里

enter image description here

连接其他映像弧我的起点,终点和中心点也是我有开始和结束的角度。

该链接有很多更多的东西 - Shortest distance between a point and a line segment

我也得到了帮助,从上面的链接。

enter image description here

这是我现在面临的另一个问题。在这种情况下如何计算两个弧之间的最小距离?

任何想法如何解决这两个问题?

回答

-1

两条相交线之间的距离为0

否则,您需要的是计算其中一条线的端点。 如果要计算一个点和一条线之间的距离:

它是连接点到线和垂直于所述线的线段的长度。

对于弧线,我认为弧线是圆的一部分,它们之间的距离是它们的中心点之间的距离并减去它们的半径。

也许你可以找到更多在这里:Calculate the minimum distance between two given circular arcs

example

+0

这里的行不相交。 –

+0

我刚刚编辑了我的答案。你可以检查 –

+0

你能告诉我一些例子吗,或者你有什么相同的代码? –

1

让两个路段AB和CD。它们的参数方程可以写成

P = A + u AB, Q = C + v CD, with u, v in [0, 1]. 

你想最小化(平方)距离

PQ² = (CA + u AB - v CD)², under the given constraints, 

,您可以用

(CA + u AB - v CD).AB = 0 
(CA + u AB - v CD).CD = 0 

取消一阶导数的2×2系统的解析后你得到一双(u, v)。如果两个变量落在[0,1]之间,则有一个交点,距离为0

否则,将u和/或v钳位到范围[0, 1]的相关边界并计算相应的距离。

如果一个变量被钳位,则该距离位于终点和段之间;如果两个人被夹住,那是在两个端点之间。


类似的方法可以用于弧(使用三角函数),并导致线性约束下的优化问题。尽管目标函数是非线性的,但不太容易处理。


我们还可以进行如下操作:

  • 发现,使整个圆之间的最短距离的点。有两种情况:

    • 的圆相交,在两个地方

    • 圆不相交;最短距离在两个圆的交点和中心线之间。

  • 然后通过角度比较检查这些点是否属于弧。如果是,则完成(距离为0或交叉点之间的距离)。

  • 否则,考虑对另一个圆的弧的端点。最接近的点是圆与通过点和中心的直线的交点。如果交叉点属于弧线,则保持该点与交点之间的距离。对所有四个组合端点/弧重复此操作,并保持最接近的一对。

  • 如果找不到有效配对,请保持最短的端点/端点距离。

图为可以考虑的距离。绿色,终点/圆圈;红色,终点/终点。在这种情况下,圆/圆距离在交叉时为零。如果连接弧线内的两个点,则可以考虑距离。

enter image description here

相关问题