线段和椭圆之间的距离

问题描述 投票:0回答:1

我正在尝试找到一种有效的方法来计算给定线段和椭圆之间的距离:

研究了一点,我发现Youtube上的链接,并尝试使用熟悉的C#函数复制该方法。我必须为某些计算添加一些扩展名,例如找到椭圆与线段/线(带旋转的椭圆)之间的交点。几个小时后,我设法复制了该方法,但显然它似乎不太有效。也许是的,我不知道。

我将用彩色说明它而不是使用传统术语,因为我没有时间将字母放在图表上。

enter image description here

垂直于初始线段的洋红色线段是使用距辅助线段(蓝色)和圆(红色)之间的第一个交点的距离来计算的>]

<<

通过仿射变换,可以使线段的支撑线与轴x(方程y = h)平行,并使椭圆在原点上居中。然后,您必须使椭圆的点最小化(y - h)²
PQ为椭圆轴的端点。我们可以写出参数方程式

R = P cosΘ + Q sinΘ

因此我们将其最小化

(y - h)² = (Py cosΘ + Qy sinΘ - h)².

通过取Θ的导数,

(-`P`y sinΘ + Qy cosΘ)(Py cosΘ + Qy sinΘ - h) = 0

给予

tanΘ = Qy / Py.

Θ的值中绘制x,并检查其是否投影在线段上。如果不是,则最短的距离是段端点之一。

不幸的是,到点最短距离的问题导致了三次方程。
c# optimization graph-algorithm computational-geometry
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.