【发布时间】:2020-05-31 12:01:25
【问题描述】:
我正在尝试找到一种有效的方法来计算给定线段和椭圆之间的距离:
研究了一下,我在Youtube 上找到了该链接,并尝试使用熟悉的 C# 函数复制该方法。 我必须为某些计算添加一些扩展,比如找到椭圆和线段/线(带旋转的椭圆)之间的交点。 几个小时后,我设法复制了该方法,但显然它似乎不太有效。或许是的,我不知道。
我将用颜色来说明它,而不是使用传统的命名法,因为我没有时间将字母放在图表上。
垂直于初始线段的洋红色线段是使用辅助线段(蓝色)和圆形(红色)之间第一个交点的距离计算得出的
【问题讨论】:
-
我认为最简单的方法是计算直线和连接椭圆中心的直线的距离(参见:en.wikipedia.org/wiki/Distance_between_two_straight_lines)。然后减去椭圆的公式。
-
求包含线段 s 的直线 L 与椭圆之间的距离。这是微积分。如果在 s 上实现了最小距离,那么你就完成了。如果最小距离是在 s 上实现的,那么 min 是 s 的一个端点或另一个端点。
-
“显然效率不高”:什么意思?
-
@YvesDaoust,我的意思是该方法源自上面YouTube链接中的图形方法,虽然它不是图形方法,因为我使用了双精度计算,它们并没有太多的计算,是一种间接的方法,找交点找切线。有时切线并没有真正接触到椭圆,我有大概的距离,但我认为用这种方法我将无法找到切线和椭圆之间的交点。
-
@Cheva:那么,有两个问题:他们的方法在数值上准确吗?他们的方法快吗?
标签: c# optimization graph-algorithm computational-geometry