首先我有两个问题,如何计算两条线之间的最小距离。 有关详细信息,我在此处附加图片。
在图像中描述具有起点和终点的线。我已经有两条线的起点和终点,但我不知道如何计算两条线之间的最小距离。
另一个问题是如何计算两个弧之间的最小距离。 我在这附加另一张图片
对于弧线,我有起点,终点和中心点,我也有开始和结束角度。
此链接包含更多内容 - Shortest distance between a point and a line segment
我也从上面的链接中获得了帮助。
这是我现在面临的另一个问题。在这种情况下如何计算两个弧之间的最小距离?
任何想法如何解决这两个问题?
答案 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
解决2x2系统后,你会得到一对(u, v)
。如果两个变量都落在[0,1]
中,则会有一个交点,距离为0
。
否则,将u
和/或v
钳位到范围[0, 1]
的相关范围并计算相应的距离。
如果一个变量被钳制,则距离在端点和段之间;如果两个被夹住,它就在两个端点之间。
弧可采用类似的方法(使用三角函数),并导致线性约束下的优化问题。但不容易处理,因为目标函数是非线性的。
我们也可以按照以下步骤进行:
找到使整个圆圈之间的距离最短的点。有两种情况:
圆圈在两个地方交叉
圆圈不相交;最短距离是两个圆的交点和中心线之间的距离。
然后通过角度比较检查这些点是否属于弧。如果是,则完成(距离为0或交叉点之间的距离)。
否则,请考虑弧对另一个圆的端点。最近点是圆与穿过点和中心的直线的交点。如果交点属于弧,请保持点与交点之间的距离。对所有四个组合端点/弧重复此操作并保留最近的一对。
如果未找到有效对,请保持最短的端点/端点距离。
图片显示了可以考虑的距离。绿色,端点/圆圈;红色,端点/端点。在这种情况下,圆/圆距离在它们相交时为零。如果它连接弧内的两个点,则可以考虑距离。
答案 1 :(得分:-1)
两条相交线之间的距离为0
否则,你想要的是计算一条线到另一条线的端点。
如果要计算点和线之间的距离:
线段的长度将点连接到线并垂直于线。
对于弧线,我认为弧线是圆弧的一部分,它们之间的距离是它们的中心点之间的距离减去它们的半径。
您可以在这里找到更多信息:Calculate the minimum distance between two given circular arcs
示例