旋转卡壳——凸多边形最小面积外接矩形

计算几何系列 —— 美妙的旋转卡壳算法~上 上述就是我们利用旋转卡壳算法求出二维凸包的直径~,那么关于旋转卡壳算法如此巧妙,怎会只有这一种用途~ ,旋转卡壳算法其实还可以用于解决大量的多边形的问题,而非仅仅局限于原来了解的基于凸包的一些具体问题,十分具有研究价值 阅读详情

凸多边形最小面积外接矩形

给定一个凸多边形 P , 面积最小的能装下 P (就外围而言)的矩形是怎样的呢? 从技术上说, 给定一个方向, 能计算出 P 的端点并且构由此造出外接矩形。 但是我们需要测试每个情形来获得每个矩形来计算最小面积吗? 谢天谢地, 我们不必那么干。

对于多边形 P 的一个外接矩形存在一条边与原多边形的边共线。

上述结论有力地限制了矩形的可能范围。 我们不仅不必去检测所有可能的方向, 而且只需要检测与多边形边数相等数量的矩形。 

图示上述结论: 四条切线(红色), 其中一条与多边形一条边重合, 确定了外接矩形(蓝色)。


一个简单的算法是依次将每条边作为与矩形重合的边进行计算。 但是这种构造矩形的方法涉及到计算多边形每条边端点, 一个花费 O(n) 时间(因为有 n 条边)的计算。 整个算法将有二次时间复杂度。

一个更高效的算法已经发现。 利用旋转卡壳, 我们可以在常数时间内实时更新, 而不是重新计算端点。
实际上, 考虑一个凸多边形, 拥有两对和 x 和 y 方向上四个端点相切的切线。 四条线已经确定了一个多边形的外接矩形。 但是除非多边形有一条水平的或是垂直的边, 这个矩形的面积就不能算入最小面积中。
然而, 可以通过旋转线直到条件满足。 这个过程是下属算法的核心。 假设按照顺时针顺序输入一个凸多边形的 n 个顶点。

  1. 计算全部四个多边形的端点, 称之为 xminP, xmaxP, yminP, ymaxP。
  2. 通过四个点构造 P 的四条切线。 他们确定了两个“卡壳”集合。
  3. 如果一条(或两条)线与一条边重合, 那么计算由四条线决定的矩形的面积, 并且保存为当前最小值。 否则将当前最小值定义为无穷大。
  4. 顺时针旋转线直到其中一条和多边形的一条边重合。
  5. 计算新矩形的面积, 并且和当前最小值比较。 如果小于当前最小值则更新, 并保存确定最小值的矩形信息。
  6. 重复步骤4和步骤5, 直到线旋转过的角度大于90度。
  7. 输出外接矩形的最小面积。

因为两对的“卡壳”确定了一个外接矩形, 这个算法考虑到了所有可能算出最小面积的矩形。 进一步, 除了初始值外, 算法的主循环只需要执行顶点总数多次。 因此算法是线性时间复杂度的。

一个相似但是鲜为人知的问题是最小周长外接矩形问题。 有趣的是这两个问题是完全不同的问题, 因为存在(尽管极少)最小面积外接矩形和最小周长外接矩形多边形不重合的多边形。

 

 

原文地址:http://cgm.cs.mcgill.ca/~orm/maer.html

 

转载请注明出处,谢谢!

旋转卡壳算法求最小外接矩形代码 /**MABR:Minimum Area Bounding Rectangle * @brief :获取由凸包传来的点集,计算最小外接矩形,采用旋转卡壳算法 * @param[in] :凸包传来的点集,逆时针顺序的点集 * @param[out] : * @return :返回最小外接矩形的四个点集。顺时针方向 */ CUBECOM_API vector<iCoord2d> GetMABRByRotatingCaliper(vecto.. 阅读详情

相关推荐

最小外接矩形思路以及实现

最小外接矩形 外接矩形计算 对一个凸多边形进行外接矩形计算,需要知道当前面的最大xy 和最小xy值,即可获得外接矩形 最小外接矩形计算 对凸多边形的每一条边都绘制一个外接矩形求最小面积。下图展示了计算流程 计算流程 旋转基础算法实现 旋转点基础 /** * 旋转点 * * @param point ...

weixin_33795806的博客 4356

`算法知识` 多边形, 凸多边形, 外接矩形

1

WChang的博客 2166

凸包+旋转卡壳专题

洛谷P2742 求凸包周长 #include&lt;bits/stdc++.h&gt; using namespace std; const int MAX=1e4+1; const double eps=1e-8; struct point { double x,y; point(){} point(double a,double b) { ...

Qianyri的博客 1250

hdu 5251 矩形面积 (旋转卡壳求最小面积外接矩形)

矩形面积 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 417    Accepted Submission(s): 239 Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊

clover_hxy的博客 5260

探索凸多边形的几何特性与算法应用

本文探讨了凸多边形在计算几何中的重要应用,特别是最小面积外接矩形问题的解决方法。通过旋转卡壳技术,提出了一种高效算法,该算法仅需线性时间复杂度即可计算出凸多边形的最小面积外接矩形。此外,文章还介绍了凸多边形的最小周长外接矩形问题,以及三角剖分中“剥洋葱皮”操作的概念。通过这些算法,我们能够更高效地处理几何数据,为计算机图形学和相关领域提供了实用的解决方案。

weixin_33670640的博客 420

如何制作poster以及下载poster模板

目录 前言 一、poster 二、制作软件 1.常用软件 2.专用工具 3.模板下载网址 总结 前言 随着会议的发展,参与国际会议成为研究工作展示的重要途径。poster逐步成为一个方面专家交流的重要工具。本文主要简单介绍一些poster的制作工具。 一、poster Paper, presentation, poster是deadline期间作者的三座大山。poster的内容较小,但内容都是论文中的干货。 二、制作软件 一般来说,制作poster使用PowerPoint.

yiyang14的博客 2万+

旋转卡壳——凸多边形最小周长外接矩形

出处:http://blog.youkuaiyun.com/acmaker/article/details/3188177 凸多边形最小周长外接矩形 这个问题和最小面积外接矩形相似。 我们的目标是找到一个最小盒子(就周长而言)外接多边形 P 。  有趣的是通常情况下最小面积的和最小周长的外接矩形是重合的。 有人不禁想问这是不是总成立的。 下面的例子回答了这个问题: 多边形(灰色的)及其最小面

runninghui的专栏 2635

Vivado IP核:AXI Uartlite的使用经验分享

1. IP基本设置 在Vivado中,打开IP Catalog,搜索“uart”: 双击“AXI Uartlite”,进入IP配置界面: 这里可以配置IP的具体参数,设置时钟频率、波特率等,完成后,生成IP即可。 2. IP的时序特点 点击下面的链接可以下载该IP核的官方指导文档: https://china.xilinx.com/support/documentation/ip_docume...

weixin_43265132的博客 1万+

【旋转卡壳合集】 - 凸多边形直径 - 凸多边形间最小距离 - 凸多边形最小面积外接矩形

参考资料https://blog.youkuaiyun.com/ACMaker 【凸多边形直径】POJ - 2187 - Beauty Contest 题目链接http://poj.org/problem?id=2187 #include<iostream> #include<stdio.h> #include<algorithm> #include<math...

Eliot的博客 823

基于深度学习的生活垃圾检测与分类系统:YOLOv5、YOLOv6、YOLOv7与YOLOv8实现

本项目的目标是开发一个基于YOLO系列模型的生活垃圾检测与分类系统。数据集准备与标注:收集并标注生活垃圾图像数据集。模型训练:使用YOLOv5、YOLOv6、YOLOv7、YOLOv8等深度学习模型训练垃圾分类系统。UI界面设计:设计一个简洁的用户界面,支持图像或视频的上传与垃圾分类结果展示。实时垃圾检测与分类:通过摄像头进行实时垃圾检测和分类。结果展示与保存:展示检测结果,支持用户保存分类后的图像或视频。

YOLO 705

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)_167

本系统主要由超市环境监测部分和商品管理部分组成。环境监测部分主控芯片采用STM32F103C8T6,主要包括温湿度传感器、烟雾传感器和空调制热开关、空调制冷开关,采集的数据通过ESP8266模块+MQTT协议上传至OneNet云平台,在OneNet云平台设计手机和电脑版本可视化页面,能够在页面上查看超市的环境信息,还能在页面上手动打开空调制热开关和空调制冷开关。商品管理部分主要由RC522-RFID读卡器、上位机组成,实现商品选购、结算、顾客的VIP会员卡注册管理等功能。

6069

凸多边形最小面积外接矩形

给定一个凸多边形 P , 面积最小的能装下 P (就外围而言)的矩形是怎样的呢? 从技术上说, 给定一个方向, 能计算出 P 的端点并且构由此造出外接矩形。 但是我们需要测试每个情形来获得每个矩形来计算最小面积吗? 谢天谢地, 我们不必那么干。    对于多边形 P 的一个外接矩形存在一条边与原多边形的边共线。    上述结论有力地限制了矩形的可能范围。 我们不仅不必去检测所有可能的方向,...

人生几何的博客 5295

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3475

Opencv——minAreaRect()计算最小外界矩形

minAreaRect()函数计算并返回指定点集的最小区域边界斜矩形 RotatedRect minAreaRect(InputArray points) point:输入信息,可为包含点的容器vector或mat RotatedRect:返回一个轮廓的外接矩形,包覆输入信息的最小斜矩形,是一个Box2D结构rect:(最小外接矩形的中心(x,y),(宽度,高度),旋转角度)。 旋转角度θ是水平轴(x轴)逆时针旋转,与碰到的矩形的第一条边的夹角。并且这个边的边长是width,另一条边边长是h

xiaohu的博客 5612

大数据在电力行业的应用案例解析-【电力技术】(九)大数据在电力储能运维中的深度应用(含故障预测代码)

大数据技术为电力储能运维提供了“精准化、智能化、高效化”的解决方案,破解了传统运维的核心痛点,实现了储能系统从“被动抢修”到“主动运维”的转型,为新型电力系统建设提供了重要支撑。当前,随着储能产业的快速发展,大数据与储能运维的融合将更加深入,未来将结合人工智能、物联网、区块链等技术,实现储能运维的全流程智能化——从设备故障的提前预警,到寿命的精准预测,再到运维策略的自动优化、调度协同的实时响应,进一步提升储能系统的安全性、经济性与可靠性。

getusushu的博客 87

RK3568 RGA硬件加速详解:图像缩放、旋转、格式转换10倍提速

RGA(Raster Graphics Acceleration)是瑞芯微(Rockchip)芯片系列中的 2D 图形加速引擎,专门用于处理像素级的图像操作。它通过硬件实现常见的图像处理算法,解放 CPU,降低功耗。RGA 是 RK3568 平台上一颗强大的 2D 图形加速引擎,能够:✅10-20 倍性能提升:大幅减少图像处理时间✅降低 CPU 占用:释放 CPU 资源给其他任务✅丰富的功能:缩放、旋转、裁剪、格式转换一应俱全✅易于集成:librga 提供简洁的 C API。

小灰灰的博客 1694

旋转卡壳

旋转卡壳 //Achen #include&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;algorithm&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; #include&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; #include&amp;amp;amp;amp

啊宸的前博客 705

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏

jks212454的博客 1814

旋转卡壳详解(转)

旋转卡壳详解 转载来源:https://blog.youkuaiyun.com/qq_34921856/article/details/80690822 (应博主要求 我是博主粉丝) 另一篇博客 问题描述 基本问题为O(n)求凸n角形的对踵点,而由该问题可以引申出许多的难题,他们包括: 计算距离 凸多边形直径 凸多边形宽 凸多边形间最大距离 凸多边形间最小距离 外接矩形 最小面积外接矩形 最小周长外接...

weixin_30402085的博客 138

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

凸多边形最小面积外接矩形_人生几何_新浪博客

给定一个凸多边形 P , 面积最小的能装下 P (就外围而言)的矩形是怎样的呢? 从技术上说, 给定一个方向, 能计算出 P 的端点并且构由此造出外接矩形。 但是我们需要测试每个情形来获得每个矩形来计算最小面积吗? 谢天谢地, 我们不必那么干。 对于多边形 P 的一个外接矩形存在一条边与原多边形的边共线。 上述结论有力地限制了矩形的可能范围。 我们不仅不必去检测所有可能的方向, 而...

人生几何的博客 644

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

旋转卡壳解决一类问题(资料) 《转载》

以下所有文章均转载( http://blog.youkuaiyun.com/acmaker/article/details/3176910) 转载请注明出处! 1、旋转卡壳——翻译说明文档   前一段时间看了一位国外大牛的网站,是关于旋转卡壳技术的,内容很不错,就尝试着翻译一下。      关于旋转卡壳技术,最早是在刘汝佳、黄亮的《算法艺术与信息学竞赛》上看到的,是计算几何相关的技术,开始觉得很神奇

binwin20 1087

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

旋转卡壳&凸包(不用一下子就学完所有)

目录前言参考博客前置知识1.极角排序2.凸包(默认逆时针)3.对踵点旋转卡壳能解决的各类问题1.计算距离1.1凸多边形直径1.2凸多边形宽1.3凸多边形间最大距离1.4凸多边形间最小距离2.外接矩形2.1最小面积外接矩形2.2最小周长外接矩形3.三角剖分3.1洋葱三角剖分3.2螺旋三角剖分3.3四边形剖分4.凸多边形属性4.1合并凸包4.2找公切线4.3凸多边形交4.4临界切线4.5凸多边形矢量和5.最薄截面5.1最薄横截带 前言 1.不用总想着一下子就学完所有知识,刷题要紧(能遇到的东西才是重点!!!)

I_have_a_world的博客 3143

最小外接矩形

1.求凸包 https://blog.youkuaiyun.com/sunflower_sara/article/details/81222376   2.求最小外接矩形 对于多边形 P 的一个外接矩形存在一条边与原多边形的边共线。 不仅不必去检测所有可能的方向, 而且只需要检测与多边形边数相等数量的矩形。      图示上述结论: 四条切线(红色), 其中一条与多边形一条边重合, 确定了外...

sunflower_sara的机器学习园地 1万+

计算几何进阶-旋转卡壳

旋转卡壳的题没什么难度,主要是熟练运用模板和熟悉算法。 A - Beauty Contest 求凸多边形直径模板题,由于都是整数点,极角排序如果用角度而非叉积的话很有可能被卡精度(哭),所以计算几何题尽量还是整数运算吧。。 #include&lt;iostream&gt; #include&lt;algorithm&gt; #include&lt;cstring&gt; #include...

qq_34921856的博客 374
上一篇: 旋转卡壳——凸多边形间最小距离
下一篇: 旋转卡壳——凸多边形最小周长外接矩形
ACMaker
博客等级 码龄20年 72粉丝 0原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值