从点开始凹面上的最近点

时间:2010-01-18 14:17:11

标签: algorithm geometry

如果在此并集内有凸对象和点 p 的并集,那么如何从 p 中找到并集(凹)表面上的最近点?

对于它的价值,我可以很容易地找到单个凸起物体表面上的最近点,这是几个给我带来问题的联合。

编辑:我非常抱歉,我的意思是对象的结合,而不是交集:(对所有回答的人道歉。

EDIT2:这是一张描述AakashM礼貌的小图片, a 是来自 A 表面上的最近点O b B 表面上距离 O 最近的点, x 是我正在寻找( O == p )。

alt text

我的物体不是多边形物体,而是具有半径的线条(我认为术语胶囊有时会用于此但我不知道这个术语是否被普遍接受)。

4 个答案:

答案 0 :(得分:3)

可能有一种更有效的方法,但天真的方法是在每个表面上找到最接近 p 的点,然后选择最小的那个距离。由于 p 位于所有对象的相互交叉点内,因此该点保证位于交叉点表面。

答案 1 :(得分:0)

我猜你必须计算表面上所有单个物体上的最近点(给你 n 点),然后检查每个点,如果它的在里面所有其他对象(因此它是交叉点表面的一部分),而不是找到最接近 p 的对象。

这个算法使用的事实是,一个点位于 n 凸对象交点的表面上,如果它是在其中一个对象的表面上并且< em> inside 所有其他对象(交叉点的表面由相交对象的小块表面组成......)

答案 2 :(得分:0)

我不知道您正在处理的工具和数据结构,但是例如在matlab中当您与n个多边形相交时,结果是一个新的交叉多边形,并且如果您可以轻松找到表面上的最近点如果交叉多边形是凹的,则可以对三角形物体进行三角测量以获得凸面物体。

答案 3 :(得分:0)

(对于联盟版)

并集的每个凹点都位于两个对象的边界的交点处。所以你可以计算所有这些交点,测试它们是否在你的联合边界上,并选择最接近p。

但是,你需要更多,如下面的情况(2个矩形的联合)

+--------------------+
|                    |
+--------------------+
|         p          |
|                    |
|                    |
|                    |
|                    |
+--------------------+

您想要的结果不是边界交叉点,并且它不是单独的任何一个矩形与p的最近点。我不知道如何处理这种情况。