Algorithm 如何在平面中找到点
我有一些已知的r=1的圆(下图,4个圆称为C1到C4)。我想找到离(0,0)最近的点,不在圆内。有多项式算法吗Algorithm 如何在平面中找到点,algorithm,computational-geometry,nearest-neighbor,Algorithm,Computational Geometry,Nearest Neighbor,我有一些已知的r=1的圆(下图,4个圆称为C1到C4)。我想找到离(0,0)最近的点,不在圆内。有多项式算法吗 您可以为圆内的每个点找到从点(0,0)开始的长度,然后找到不在圆内的最小邻域。距离原点最近的点将是以下之一: 两圆相交 圆与连接该圆心与原点的直线的交点 原点本身,如果它不在任何圆圈内 如果圆心位于原点,则圆上有无穷多个点 检查所有这些点,并找到其中最接近的点,条件是该点不位于某个圆内 这将给您带来复杂性O(n^3)。这不是一个完全可以随时使用的答案,只是一个供您遵循的草稿(请让我
您可以为圆内的每个点找到从点(0,0)开始的长度,然后找到不在圆内的最小邻域。距离原点最近的点将是以下之一:
- 两圆相交
- 圆与连接该圆心与原点的直线的交点
- 原点本身,如果它不在任何圆圈内
- 如果圆心位于原点,则圆上有无穷多个点
这将给您带来复杂性O(n^3)。这不是一个完全可以随时使用的答案,只是一个供您遵循的草稿(请让我们知道您下次尝试了什么)
所需点位于以原点为中心的所有圆的并集的边界上,最大内接于某个输入圆Cn 算法: 对于半径r_i以O_i为中心的每个输入圆C_i(其中O_i距离原点d_i,Oi_1^2+Oi_2^2=d_i^2),计算内接半径u_i=r_i-d_i,并找到它们的最大值。距离原点的某个点u_max就是解决方案
为了找到实际点,假设某些i的u_i=u_max。那么你想要的是-O_i*u_i/d_i。如果d_i=0,那么任何远离原点的点r_i都有效。当然有。你试过什么?我的第一个想法是最近的点要么是原点,要么是其中一个圆上离原点最近的点,要么是两个圆的交点。你可以明确地检查这些点中的每一点,看哪一点最接近,但不在另一个圆内。你能给出一个例子和想要的答案吗?圆算吗?我已经在这里添加了示例的解决方案。最好在这里询问没有这样的点。我想找到它。我无法用暴力来寻找所有可能的解决办法