沿椭圆测量距离

时间:2011-05-20 10:58:34

标签: c++ algorithm distance ellipse

假设我们有一个椭圆x ^ 2 / a ^ 2 + y ^ 2 / b ^ 2.

在椭圆上取一个点(a * cos(t),b * sint(t)),在椭圆上找到另一个点的最快方法是什么,它们之间的距离是给定的d。 [d小于pi * a * b]。

当我有一个角落[四分之一椭圆]并且需要找到一些分开的点时会遇到问题。

2 个答案:

答案 0 :(得分:3)

椭圆的一个子部分的长度是一个椭圆积分,没有闭合形式的解。

为了计算沿椭圆的距离,您需要一个数值积分程序。我推荐Romberg,或Gauss Quadrature(在维基百科上查找)。如果你反复这样做,那么预先计算Ellipse周围一堆点的距离,这样你就可以快速到达正确的区域,然后开始积分。

您需要一分为二(查看维基百科)以找到所需的长度。

答案 1 :(得分:0)

椭圆弧的长度没有解析解。这意味着您将无法将数字插入等式中以查找结果,而是使用数值积分方法。

Simpsons rule很容易实现,但很可能比其他答案中提到的方法慢。

既然您有办法找到椭圆弧的长度,只需测量不同的终点,直到找到长度d为可接受的公差之一