社区
数据结构与算法
帖子详情
最小包围圆,很简单的呀
qiaoyu2k
2001-06-19 08:45:00
平面上有个n点
1。求一包围所有点的圆,使其面积最小。
2。求一包围所有点的凸多边形,使其面积最小。
不知道是否已经有了成熟的算法.
...全文
969
7
打赏
收藏
最小包围圆,很简单的呀
平面上有个n点 1。求一包围所有点的圆,使其面积最小。 2。求一包围所有点的凸多边形,使其面积最小。 不知道是否已经有了成熟的算法.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
starfish
2001-06-20
打赏
举报
回复
sorry,写错了,上面倒数第二句话应该是:
S1耗时O(nlogn),S2耗时O(n),S3耗时O(nlogn),S4耗时O(n),因此复杂度是O(nlogn)
starfish
2001-06-20
打赏
举报
回复
第一个问题很简单,是最小覆盖问题MINC的一个简单特例,一个简单的算法是过S的每三点作一个圆,并检验其余的点是否在圆内,这个算法的复杂度是O(n^4),Elzinga和Hearn提出的算法将此界限改进到了O(n^2),这个算法的主要思想是减少需要验证的三元组的数目。另外,Shamos还设计一个O(nlogn)的算法,该算法利用了这个特性:包围所有S点的最小圆是唯一的,且该圆或者通过3个S中的点或者2个S中的点,并且这两个S中的点恰是该园直径的两个端点。
算法:
S1。计算点集S的凸壳CH(S);
S2。计算CH(S)的直径,设为(pi,pj),以(pi,pj)为直径作圆C,如果S点都在C内,则C就是所求最小园;否则转S3;
S3。计算点集S的最远点意义下的Voronoi圆,即Vor(n-1,S);
S4。设点v时Vor(n-1,S)中的一个Voronoi点,以v为圆心,v至S点集中3个最远点的距离为半径作圆,该园就是所求。
S1耗时O(nlogn),S2耗时O(n),S3耗时O(nlogn),S4耗时O(n),因此复杂度是O(logn)
第二个问题就是求凸包,有很多经典算法。
Michael_yu
2001-06-20
打赏
举报
回复
问题一:
1)求包围所有点的距形;
for(int i =0;i<pointNumber;i++)
{
Rect.left = min(Rect.left,pt[i].x);
Rect.right = max(Rect.right,pt[i].x);
Rect.top = min(Rect.top,pt[i].y);
Rect.bottom = max(Rect.bottom,pt[i].y);
}
2)做距形的外切圆。
问题二
1)把平面的点分成两个集合A(n),B(0);
2)从A(n)任意取三点到B(0) =》A(n-3),B(3);
在B中就形成了一个多边形(三角形).
3)从A中任意取pt[i]一点到B;
a)如果pt[i]在B.Region内,不用调整B.Region;
b)如果pt[i]在B.Region外,调整B.Region;
4)重复3)直到取光;
5)B.Region应该是最小的多边形。
但不知道是凸多边形还是凹多边形。
tangdaqu
2001-06-20
打赏
举报
回复
我觉得应该这样:
找不在同一直线上的三点,三点可确定一个圆,即外接圆。然后判断其它点是否在在圆内即可
若在完成,若不在在继续循环!
同理,找多边形时,先确定一个三角形。然后判断,开始循环,一个点若在多边形内则通过,不在则把这个点扩展到这个多边形里,即作为多边形的一个顶点,继续循环,直到没有点在多边形内。
我这仅是算法思想,若你还需要具体算法,请在说一声!
ruor
2001-06-19
打赏
举报
回复
顺便问问:对我的这个问题有什么看法?http://www.csdn.net/expert/topic/153/153902.shtm
ruor
2001-06-19
打赏
举报
回复
问题二应该就是求平面点集的凸壳吧?采用分治法O(nlogn).问题一等于求平面点集的直径,求出凸壳先,然后比较各对角线O(n^2);或者对凸壳采用夹角序列法O(n)求出直径.参考周培德著<计算几何>ISBN 7-302-03801-5
qiaoyu2k
2001-06-19
打赏
举报
回复
因该很简单的呀
PCL
最小
包围
盒完整代码
PCL
最小
包围
盒完整代码,实现了2D/3D点云
最小
包围
盒的实现. PCL
最小
外接矩形完整代码,实现了2D/3D点云
最小
外接矩形的实现
matlab开发-精确的
最小
边界球和
圆
matlab开发-精确的
最小
边界球和
圆
。计算三维/二维点集的精确和近似
最小
边界球体/
圆
Fitting Circle.zip
用
最小
二乘法,
最小
包容
圆
法和
最小
区域法拟合
圆
的三种算法 用c++实现
精确的
最小
边界球和
圆
:计算3D / 2D点集的精确和近似
最小
边界球/
圆
-matlab开发
寻找
最小
边界球(又名
最小
包围
球)的问题在许多应用中经常遇到,包括计算机图形学和模式识别。 虽然存在许多用于查找此类球体的相对
简单
的算法,但在 Matlab 中没有可以轻松在线找到这些算法的稳健实现。 本提交中包含的功能旨在填补这一空白。 可以使用函数“ExactMinBoundSphere3D”和“ExactMinBoundCircle”计算精确的
最小
边界球体和
圆
,这两个函数都实现了 Wezlz 的算法 [1]。 可以使用“ApproxMinBoundSphereND”函数计算任何维度的近似
最小
边界球体,该函数实现了 Ritter 算法 [2]。 为方便起见,我还包含了函数“VisualizeBoundSphere”和“VisualizeBoundCircle”,它们允许您使用各自的
最小
边界球体/
圆
来可视化输入点云(或网格)(参见演示图片)。 要演示如何使用这些函数,请下载附带的
创建
包围
轮廓的矩形和
圆
形边界框.rar
本程序是通过C++和OPENCV结合,创建一个可以动态
包围
物体轮廓的矩形和
圆
形边界框,这对开发人工智能的程序员有一定的帮组
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章