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

 

平面上一些点,如何找某一点周围一圈最近的点
比如一些坐标点
(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);
不知可行否,先试试了
  
 

 
 
    
 


 
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值