社区
数据结构与算法
帖子详情
最小包围圆,很简单的呀
qiaoyu2k
2001-06-19 08:45:00
平面上有个n点
1。求一包围所有点的圆,使其面积最小。
2。求一包围所有点的凸多边形,使其面积最小。
不知道是否已经有了成熟的算法.
...全文
867
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
打赏
举报
回复
因该很简单的呀
精确的
最小
边界球和
圆
:计算3D / 2D点集的精确和近似
最小
边界球/
圆
-matlab开发
寻找
最小
边界球(又名
最小
包围
球)的问题在许多应用中经常遇到,包括计算机图形学和模式识别。 虽然存在许多用于查找此类球体的相对
简单
的算法,但在 Matlab 中没有可以轻松在线找到这些算法的稳健实现。 本提交中...
ACM 计算几何模板
4.
最小
包围
圆
36 5. 求两个
圆
的交点 39 6. 求三角形外接
圆
圆
心 40 7. 求凸包 42 8.凸包卡壳旋转求出所有对踵点、最远点对 44 9. 凸包+旋转卡壳求平面面积最大三角 47 10. Pick定理 50 11. 求多边形面积和重心 51 12...
通俗易懂的ECMAScript视频教程(含资料)
ECMAScript 规范定义了一种脚本语言实现应该包含的内容,但是,因为它是可扩充的,所以其实现所提供的功能与这个
最小
集相比可能变化很大。 ECMAScript本身并不是一种脚本语言。正如在 Web 应用程序中执行有用操作的 bean 集合(例如,Netscape 的 AWT)是 Sun 的 JavaBean 规范的一种实现一样,JavaScript 是 ECMAScript 规范的一种实现。 很多初学者会感到困惑,
简单
来说,ECMAScript是JavaScript语言的国际标准,JavaScript是ECMAScript的实现。ECMAScript(俗称: ES5, ES6)规范是前端工程师的必备技能(尤其ES6)。 本套视频从ES5、ES6、到ES7均有涉及,尤其ES6从基本语法到高级函数均有详细讲解,是助你更上一层楼的神兵利器。
使用适应度共享的帕累托前沿:使用具有适应度共享的遗传算法找到
简单
问题的帕累托前沿-matlab开发
此代码查找并绘制以下问题的帕累托前沿: 找到
最小
的
圆
圈来
包围
最大的编号。 星星在以下*空间中的星星。 *一个充满随机定位星星的空间,因此两次不同的运行不会得到相同的结果
Ball-Tracking-Bot:给定2D视频输入,可以在三个维度上跟踪球的
简单
机器人
计算可以
包围
该轮廓的
最小
圆
的中心和半径。 通过将中心值与相机的中点进行比较,我们可以检测到XY方向上的运动。 通过将半径值与引导矩形(在我们的图像上)进行比较,我们可以检测到Z方向上的运动。 此存储库中的...
数据结构与算法
33,006
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章