P
和Q
为椭圆轴的端点。我们可以写出参数方程式R = P cosΘ + Q sinΘ
我正在尝试找到一种有效的方法来计算给定线段和椭圆之间的距离:
研究了一点,我发现Youtube上的链接,并尝试使用熟悉的C#函数复制该方法。我必须为某些计算添加一些扩展名,例如找到椭圆与线段/线(带旋转的椭圆)之间的交点。几个小时后,我设法复制了该方法,但显然它似乎不太有效。也许是的,我不知道。
我将用彩色说明它而不是使用传统术语,因为我没有时间将字母放在图表上。
垂直于初始线段的洋红色线段是使用距辅助线段(蓝色)和圆(红色)之间的第一个交点的距离来计算的>]
<<x
(方程y = h
)平行,并使椭圆在原点上居中。然后,您必须使椭圆的点最小化(y - h)²
。P
和Q
为椭圆轴的端点。我们可以写出参数方程式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
,并检查其是否投影在线段上。如果不是,则最短的距离是段端点之一。
不幸的是,到点最短距离的问题导致了三次方程。