假设我们有一个椭圆x^2/a^2 + y^2/b^2。
在椭圆上取一点(a*cos(t), b*sin(t)),如何最快地找到另一点,使它们之间的距离是给定的d呢?[d小于pi*a*b]。
当我有一个角落[四分之一椭圆]并需要找到沿着它分隔为一些'd'的点时,遇到了这个问题。
在椭圆上取一点(a*cos(t), b*sin(t)),如何最快地找到另一点,使它们之间的距离是给定的d呢?[d小于pi*a*b]。
当我有一个角落[四分之一椭圆]并需要找到沿着它分隔为一些'd'的点时,遇到了这个问题。
椭圆的子段长度是一个椭圆积分,没有封闭形式的解决方案。
为了计算沿着椭圆的距离,你需要一个数值积分程序。我建议使用Romberg或Gauss Quadrature(在维基百科上查找)。如果您需要重复执行此操作,则预先计算沿着椭圆周围的一堆点的距离,以便您可以快速到达正确的区域,然后开始积分。
您需要使用二分法(在维基百科上查找)来找到所需的长度。
椭圆弧的长度没有解析解。这意味着你不能将数字代入方程中得出结果,而是要使用数值积分的方法。
Simpsons rule非常容易实现,尽管可能比其他答案中提到的方法慢。
现在,你已经有了一种找到椭圆弧长度的方法,只需测量不同的端点,直到找到一个长度为d的可接受公差。