【发布时间】:2011-05-20 10:58:33
【问题描述】:
假设我们有一个椭圆 x^2/a^2 + y^2/b^2。
在椭圆上取一个点 (a*cos(t),b*sint(t)),找到椭圆上另一个点的最快方法是什么,使得它们之间的距离是给定的 d。 [d 小于 pi*a*b]。
当我有一个角 [四分之一椭圆] 并且需要沿着它找到由一些 'd' 分隔的点时遇到了问题。
【问题讨论】:
-
你的意思是沿圆周的距离,还是沿弦的距离?
-
一种计算方法是找到椭圆上的相对点,然后根据距离沿任一侧使用二进制搜索。
-
这是一个“难题”。如果您想快速获得它,则必须对其进行近似计算(如果您想知道原因,请在谷歌上搜索“椭圆弧长”)。
-
@Peteris +1 如果 OP 不知道什么是二分搜索 - 这很容易做到(当你知道你将能够找到这一点时,如果有的话,它会变得有点难看不保证该点存在)。
标签: c++ algorithm distance ellipse