我试图找到一种计算任意点和弧之间最短距离的通用方法,其中弧是椭圆的90度部分's boundary, and the ellipse' s轴都与笛卡尔坐标轴对齐 . 我是边界,有相当简单的方法(例如http://www.geometrictools.com/Documentation/DistancePointEllipseEllipsoid.pdf) .
在图中,如果点位于x1的左侧或x2的右侧或y1的下方,则问题是直接的 .
但是,如果点P如图所示,我无法弄清楚该怎么办 .
我试图找到一种计算任意点和弧之间最短距离的通用方法,其中弧是椭圆的90度部分's boundary, and the ellipse' s轴都与笛卡尔坐标轴对齐 . 我是边界,有相当简单的方法(例如http://www.geometrictools.com/Documentation/DistancePointEllipseEllipsoid.pdf) .
在图中,如果点位于x1的左侧或x2的右侧或y1的下方,则问题是直接的 .
但是,如果点P如图所示,我无法弄清楚该怎么办 .
2 回答
我通常使用省略号:
90
度块使用N>=8
所以你不要错过任何东西find the closest point
sample arc around that point by N points
覆盖前一点到下一点的区域
每次迭代/递归都会提高准确性 . 如果达到所需的精度范围(采样区域足够小)或可变精度限制(以避免 FPU 的下溢),则停止 .
[Notes]
这适用于任何椭圆弧而不仅仅是轴对齐 .
[Edit1] C++ example
和视觉输出:
所以整个弧形的东西都是红鲱鱼 . 它是一个回到单位圆的线性比例 . 所以你只需要找到从一个点到单位圆的最短距离 . (https://math.stackexchange.com/questions/103453/closest-point-to-a-unit-circle-from-a-point-inside-it)然后只需撤消刻度并测量距离 .
[Edit by Spektre] This is clearly wrong!
如果你发现最接近圆的点(在缩放空间中)并不意味着重新缩放后(到椭圆空间)这个点仍然是最接近的!见例子: