算法:平面上一些点,如何找某一点周围一圈最近的点?
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);
不知可行否,先试试了
比如一些坐标点
(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);
不知可行否,先试试了
相关文章推荐
- 最近终于把冰壶检测出来了用了那个haar的算法,下面总结一下bug是如何修复的
- 最近遇见一些算法的概述
- 关于最近做的一些有关 tarjan 类型的题目以及解析汇总(同时包括了点2-SAT、topo之类的算法)
- 如何分析思考oralce的一些问题的一点感悟!
- C语言系列(四):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序
- 算法 分治 平面最近点对
- 如何分析思考oralce的一些问题的一点感悟!
- 平面最近点对两种基本算法 转载
- [算法]基于分区最近点算法的二维平面
- [算法] 已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点
- 最近碰到的一些有意思的算法题
- 如何获取iphone基带芯片工作时候获取到的一些参数呢,如信号强度,小区,周围小区以及一些更深入的参数,有人了解吗
- datagridview .选择某个cell后在这个cell周围会出现一圈虚线, 如何清除??
- 如何获取 电脑 的一些硬件信息。用于软件的加密等算法。
- 关于显卡的一些参数说明,告诉你如何分辨哪个好一点,哪个烂一点。
- 如何避免写代码过程中一些不必要的手误----一点经验跟看法
- 算法:如何判断平面上的四个点是不是组成一个矩形
- 分治法解决平面上N点最近2点距离———算法应该OK~~~
- 《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——平面最近点对
- 判断平面内一点和三角形位置关系的算法和python语言的程序实现