凸多边形、凹多边形、凸包算法

article/2025/9/18 12:05:35

凸多边形:
(Convex Polygon)可以有以下三种定义:
1、没有任何一个内角是优角(Reflexive Angle)的多边形。
2、如果把一个多边形的所有边中,有一条边向两方无限延长成为一直线时,其他
3、凸多边形是一个内部为凸集的简单多边形。简单多边形的下列性质与其凸性等
(1)所有内角小于等于180度。
(2)任意两个顶点间的线段位于多边形的内部或
(3)多边形内任意两个点,其连线全部在多边形内部或边上。
4、一个多边形,如果它的任意两个点的连线都不包括该多边形以外的点,就称为凸多边形。
5、角度法:

判断每个顶点所对应的内角是否小于180度,如果小于180度,则是凸的,如果大于180度,则是凹多边形。

6、凸包法:

这种方法首先计算这个多边形的凸包,关于凸包的定义在此不再赘述,首先可以肯定的是凸包肯定是一个凸多边形。如果计算出来的凸多边形和原始多边形的点数一样多,那就说明此多边形时凸多边形,否则就是凹多边形。
在这里插入图片描述
凸包详解:https://blog.csdn.net/u013377068/article/details/80095620

7、顶点凹凸性法

利用以当前顶点为中心的矢量叉乘或者计算三角形的有符号面积判断多边形的方向以及当前顶点的凹凸性。

假设当前连续的三个顶点分别是P1,P2,P3。计算向量(P1,P2),(P1,P3)的叉乘,也就是计算三角形P1P2P3的面积,得到的结果如果大于0,则表示P2点在线段P1和P3的右侧,多边形的顶点是逆时针序列。然后依次计算下一个前后所组成向量的叉乘,如果在计算时,出现负值,则此多边形时凹多边形,如果所有顶点计算完毕,其结果都是大于0,则多边形时凸多边形。

8、辛普森面积法

利用待判别的顶点以及前后两个顶点所组成的三角形,利用辛普森公式计算其面积,如果此三角形面积与整个多边形面积符号相同,那么这个顶点是凸的;如果此三角形面积与整个多边形面积符号不同,那么这个顶点是凹的,即整个多边形也是凹多边形。

在这里插入图片描述
所有的正多边形都是凸多边形。
所有的三角形都是凸多边形。
凸多边形的内角均小于或等于180°,边数为n(n属于Z且n大于2)的凸多
n-2)×180°,但任意凸多边形外角和均为360°,并可通过反证法
3个。
凸多边形所有对角线都在内部,边数为n的凸多边形对角线条数为2-1n(n-3),
n-3个顶点连对角线。
凸包寻找算法
凸多边形:一个多边形,如果它的任意两个点的连线都不包括该多边形以外的点,就称为凸多边形。
一个平面点集S的凸包是指包含s的最小凸多边形,该多边形的顶点称为s的极点。
寻找一个平面点集的凸包是计算几何的基本问题,同时在图像处理和统计学中也有应用。
寻找凸包的原理:
假定在S的凸包内部取一个点X,然后从X向下画一条垂直线,也跳垂直线与X和S的第i个点的连线之间
有一个逆时针夹角,称为极角,然后按照极角非递减次序来排列S的点,对于极小相同的点,按照他们
与X的距离从小到大来排列。
从X向下的垂线沿逆时针扫描,按照极角的次序会依次遇到S的极点。如果u,v,w是三个按逆时针排列
的三个连续的极点,那么如果从u到v和从w到v两条连线之间的逆时针夹角大于180度。如果两条连线
之间的夹角小于180度,则第二个点不是极点。
一般选取y最小的点,多个y最小的话,选取其中x最小的点,作为p0,选取好p0后就可以开始选取X了
X不要求是S中的点,是任意的点,一般选在S的中心保证p0是第一个点。
伪代码:
步骤一【处理退化情况】
如果S的点少于3个,则返回S
如果S的所有点都在一条直线上,即共线,则计算并返回包含S所有点的最短直线的两个端点。
步骤二:【按极角排序】
在S的凸包内找到一个点X
按照极角递增次序来排列S的点,对于极角相同的点,按照它们与X的距离从小到大来排列创建一个
以S的点为元素,按照上述顺序排列的双向循环链表
另right指向后继,left指向前驱。
步骤三:【删除非极点的点】
另p是y坐标最小的点(也可以是x坐标最大的)

for(x=p,rx=x右边的下一个点;p!=rx){rrx=rx右边的点;if(x,rx,和rrx的逆时针夹角小于或等于180){从链表中删除rx;rx=x;x=rx左边的点;}else{x=rx;rx=rrx;}}

————————————————

凹多边形:
(Concave Polygon)可以有以下三种定义方式:
1、至少有一个优角(Reflexive Angle)的多边形。(例如下图中,∠CDE>180°)
2、把一个各边不自交的多边形任意一边向两方无限延长成为一直线,如果多边形
其他各边不在此直线的同旁(如下图左),那么这个多边形就叫做凹多边形。
3、凹多边形的是一个内部为非凸集的简单多边形.简单多边形的下列性质与其凸性等价。
(1)一个内角大于180度。
(2)存在两个顶点间的线段位于多边形的外部。
(3)多边形内存在两个点,其连线不全部在多边形内部。
在这里插入图片描述
示例:

五角星、四角星、八角星、六角形等都是凹多边形:例如,正六角星中,有一个240°
的角。

性质:

1、平面上,不可能存在凹三角形。
2、凹多边形的内角和的解,应该通过(n-2)180°来计算。实际上是把大于平角
使得任意一个凹N多边形,都可分画为N-2个三角形,因此凹多边形的内角和也适用于(N-2)180°这个公式。不可以沿着一条边的延长线切割凹多边形。
3、平面上,凹多边形与边数相同的凸多边形的内角和相等。
在这里插入图片描述
凹多边形内角和的计算方法: 任意一个凸 (或凹) N 多边形 ,都可分画为 N-2 个三角形 ,
因此凹多边形的内角和 ,也适用( N-2 ) 180° 这个公式
凹多边形的外角和是: 360+ 大于 180 度的内角的个数 *180

原文链接:https://blog.csdn.net/Du_Shuang/article/details/81083662


http://chatgpt.dhexx.cn/article/ThCWrLtL.shtml

相关文章

搜狗浏览器屏蔽广告插件_“云法庭”里“云勘验” 法院开审搜狗浏览器插件屏蔽优酷视频广告案...

在第20个世界知识产权日到来之际,北京海淀法院通过“北京法院云法庭”公开开庭审理原告优酷信息技术(北京)有限公司(下称优酷公司)与被告北京搜狗科技发展有限公司、被告北京搜狗信息服务有限公司(下合称搜狗公司)涉搜狗浏览器插件屏蔽优酷视频广告不正当竞争纠纷案…

搜狗浏览器屏蔽广告插件_“云法庭”里“云勘验”,海淀法院开庭审理搜狗浏览器插件屏蔽优酷视频广告不正当竞争纠纷案...

来源: 北京海淀法院 特别提示:凡本号注明“来源”或“转自”的作品均转载自媒体,版权归原作者及原出处所有。所分享内容为作者个人观点,仅供读者学习参考,不代表本号观点。 在第20个世界知识产权日到来之际&#xff0…

搜狗浏览器屏蔽广告插件_“云法庭”里“云勘验”法院开审搜狗浏览器插件屏蔽优酷视频广告案...

在第20个世界知识产权日到来之际,北京海淀法院通过“北京法院云法庭”公开开庭审理原告优酷信息技术(北京)有限公司(下称优酷公司)与被告北京搜狗科技发展有限公司、被告北京搜狗信息服务有限公司(下合称搜狗公司)涉搜狗浏览器插件屏蔽优酷视频广告不正当竞争纠纷案…

【视频广告位叫法】

例如:爱奇艺,优酷,腾讯视频,前贴,中插,暂停贴,后贴广告位!

优酷 DSP 广告投放系统架构实践

作者 | 鸿雁 阿里文娱技术专家 导读:随着 RTB 网络在线展现广告交易模式的兴起,各大公司都纷纷搭建自己的 DSP ( Demand-Side Platform ) 广告投放系统进行获客。优酷在近几年也搭建 DSP 系统,并且在持续迭代。在这一过程中,经历…

优酷视频在网站里播放

工具/原料 准备一组代码&#xff1a; <embed srchttp://static.youku.com/v1.0.0149/v/swf/loader.swf?VideoIDS视频ID&winTypeadshow&isAutoPlaytrue quality"high" width"580" height"435" align"middle" allowScriptA…

网页引用优酷视频并添加封面自动播放

引用优酷视频可以减轻公司的服务器压力&#xff0c;而且和自己上传保存视频相比会方便轻松许多&#xff0c;不过相对的需要忍受广告。 首先你需要在优酷里找到你要引用的视频&#xff0c;或者自己上传。然后打开会有一个分享按钮&#xff1a; 以我使用的第二个为例&#xff0…

html上传优酷视频,如何将视频发布到自己的企业网站上?

郑州做网站是为了更好的宣传企业&#xff0c;如果网站要想有视频的表现形式&#xff0c;那就得花点心思去考虑了。一般情况下&#xff0c;要想把视频放到网站上&#xff0c;无外乎就两种方式&#xff1a;第一、直接把视频上传到网站目录&#xff0c;然后在合适的位置调用。由于…

php视频系统源码,基于ThinkPHP框架仿优酷视频源码带数据,后台功能强大

源码介绍 最新高仿优酷视频网源码带数据&#xff0c;后台功能齐全强大&#xff0c;而且是基于thinkphph内核开发&#xff0c;很不错&#xff0c;虽然是旧版模板&#xff0c;但是也值得学习&#xff0c;尤其是正在学习ThinkPHP框架的人拿来学习&#xff0c;相信你需要&#xff0…

鸿蒙os去广告,隐藏福利?华为鸿蒙OS新惊喜:优酷视频流转播放可免广告

近日&#xff0c;华为鸿蒙OS 2.0开发者公测版推送正式开启&#xff0c;包括华为Mate X2、Mate 40系列等机型均可先行尝鲜。 根据目前已知信息来看&#xff0c;华为手机从6月初开始将可升级鸿蒙系统。 随着参与开发者公测的用户逐渐增多&#xff0c;网上出现大量鸿蒙OS的测试体验…

优酷视频整段代理php,thinkphp仿优酷带数据源码|php仿优酷视频源码带后台功能强大...

本项目是仿优酷官网&#xff0c;优酷官网是一个集多种知识面为一体的网站&#xff0c;能全面的锻炼我们的技能,所以我们决定仿优酷网。 本项目后台主要实现了&#xff1a;用户管理、分类管理、视频管理、评论管理、权限管理、轮播管理、网站配置和广告管理以及登录退出等模块。…

android加载优酷视频播放器,使用android优酷视频云一些问题

最近项目迭代需要添加视频播放功能&#xff0c;由于若干原因就选择了优酷视频&#xff0c;本来挺简单的一个功能在做的时候居然碰到了若干意想不到的问题&#xff0c;果然还是优酷视频提供的demo最稳定啊&#xff0c;啥问题木有~~o(>_ 好了&#xff0c;闲话不多说&#xff0…

html调用优酷视频播放,优酷网视频播放器站外调用详解

优酷网视频播放器站外调用详解 蓝叶 网站设计 2011-03-21 14201 5评论 自从蓝叶准备做视频盒&#xff0c;就一直在研究各个视频站播放器调用代码&#xff0c;只要搞明白了 代码我都共享出来了&#xff0c;这次说说优酷网播放器的站外调用方法。优酷网默认获取的 站…

mac os x 设置终端快捷键

大家都知道在linux下可以用ctraltt组合快捷来打开终端&#xff0c;那么在OS X上可以吗&#xff1f;答案是肯定的&#xff0c;其实OS X上很多功能都可以通过Apple自家的Automator.app创建&#xff0c;且使用此方法可以为任何程序创建快捷键。 废话少说&#xff0c;下面给大家演…

Mac - 当前位置打开终端

1、点击屏幕顶部的“Finder”弹出下拉菜单。 2、点击“服务”菜单项弹出子菜单&#xff0c;点击子菜单中的“服务偏好设置” 3、点击弹出的服务偏好设置窗口中的“服务”并勾选“新建位于文件夹位置的终端窗口”&#xff1b;点击该项还可以为该操作设置快捷键。 4、关闭设置窗口…

Mac自己创建打开终端快捷键(任意软件)

这里就以为“终端”程序设置一个快捷启动键。 1、打开自带的Automator&#xff08;可以用右上角Spotlight搜索找到&#xff09; 2、在创建界面选择“服务” 3、如图&#xff1a;左侧列表中&#xff0c;找到&#xff1a;操作——资源库——实用工具——开启应用程序 右侧…

Xcode终端快捷键

Xcode 直接打开终端 Xcode作为开发编辑器&#xff0c;居然不能直接打开终端&#xff0c;所以就没有快捷键&#xff0c;但是可以借助自定义 Behavior 来执行脚本&#xff0c;这样就有快捷键了&#xff0c;比如我的CMD Shift T。 1. 准备打开终端的脚本 首先编辑 shell 脚本…

MAC 终端快捷键实用

首先需要打开终端&#xff0c;这个基本都会用的吧。 在Dock里面打开Launchpad&#xff08;也可快捷键F3&#xff09;&#xff0c;找到终端的图标&#xff0c;点击打开就OK了。 现在准备工作已经做完&#xff0c;我们就来进行实地操作吧。 commandN&#xff1a;打开多个终端窗口…

mac 打开多个终端快捷键

使用快捷键&#xff1a;comman t 即可创建多个

vscode打开终端的快捷键是啥? VScode打开终端的三种方法

方法1&#xff1a;打开终端的快捷方法 打开VScode后&#xff0c;鼠标左键单击窗口顶部的【帮助】&#xff08;如下图红圈标注&#xff09;&#xff0c; 在下拉列表中找到【键盘快捷方式参考】&#xff08;如下图红框标注&#xff09; 鼠标左键点击【键盘快捷方式参考】&#xf…