您的位置:首页 > 其它

算法:平面上一些点,如何找某一点周围一圈最近的点?

2007-03-20 13:38 281 查看
平面上一些点,如何找某一点周围一圈最近的点
比如一些坐标点
(1,2)
(2,2)
(3,1)
(3,3)
(4,2)
(6,2)

要找(4,2)周围的点,划出平面坐标后看,应该是点
(2,2)
(3,1)
(3,3)
(6,2)
请问在算法上如何实现




syy64(太平洋) ( ) 信誉:145 Blog 2007-3-19 14:05:08 得分: 0



求所有点到某点的距离,按距离从小到大判断,在一定的阈值里为所需要的点。


xyliang230() ( ) 信誉:100 Blog 2007-3-19 14:16:20 得分: 0


如果有(2,1)这个点也算在内了。
因为划出到平面上,它与(4,2)点之间没有其他点。

程序
最后将这些最近的点连接起来就成一个面

Mackz(在相互) ( ) 信誉:117 Blog 2007-3-19 14:41:06 得分: 0



人的判断和计算机不一样,程序中必须给出严格的规定。比如最近的点,要么就只有一个,要么几个点的距离是一样的,或者给出一个范围,才有“最近”的定义。总之,必须先有数学上的定义,这也就是为什么编程要学数学的原因。


he_hawk(强) ( ) 信誉:96 Blog 2007-03-20 08:52:41 得分: 0


是的,数据模型的建立很重要,模型起来了,程序也就写出来了,系统也就出来了。
现在处理这个问题还没有好的思路,

如果平面上很多点,有下面几种情况:
1、找一个点A其周围最近的点,现在对周围确定为四个方向各找一个最近的点然后将这些点(最近找出四个,如点本来就在一角,就可能是两个了)连接起来就可以画成一个面,少于四个点的,就把点A也连接起来。

2、同时找两个点周围最近的点,就是将这两个点连接起来,分别找每个点周围三个方向上最近的点,两点连接这个方向的不用找,这样就是六个点(如这两个点有在边上的情况,连接成画时将在边上的点也连接起来)。

3、同时找多个点周围最近的点,也是分别找出这些点周围最近的点,再对这些点找出边界,这个边界怎么找?就用PtInRegion判断点是否在每一个面中(一点周围最近点连接起来的面),如是就将两个相交面合并,在面中的点就不再画出来。

先这样处理,看帮助好象没有判断两个多边形面是否相交的方法?只能自己用点来判断了?

he_hawk(强) ( ) 信誉:96 Blog 2007-03-20 09:15:46 得分: 0


在帮助中有这个示例
Graphics graphics(hdc);

Point points[] = {
Point(110, 20),
Point(120, 30),
Point(100, 60),
Point(120, 70),
Point(150, 60),
Point(140, 10)};

Rect rect(65, 15, 70, 45);
GraphicsPath path;
SolidBrush solidBrush(Color(255, 255, 0, 0));

path.AddClosedCurve(points, 6);

// Create a region from a path.
Region pathRegion(&path);

// Create a region from a rectangle.
Region rectRegion(rect);

// Update the region to the portion that intersects with another region.
pathRegion.Intersect(&rectRegion);

graphics.FillRegion(&solidBrush, &pathRegion);
不知可行否,先试试了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐