判断多边形的凹凸性和计算多边形面积:利用向量叉乘

article/2025/9/18 10:19:49

根据百度百科的讲解:

凸多边形

 

现在重点讲解顶点凹凸性法(最常用也是较为简单的方法):计算总结在最后。

 

利用向量叉乘的相关知识进行计算:假设当前连续的三个顶点分别是P1,P2,P3。计算向量P1P3,P1P2的叉乘,也可以计算三角形P1P2P3的面积,得到的结果如果大于0,则表示P2点在线段P1和P3的右侧,此时P2对应的角度小于180。然后依次计算下一个前后所组成向量的叉乘,如果在计算时,出现负值,则此多边形时凹多边形,如果所有顶点计算完毕,其结果都是大于0,则多边形时凸多边形。

 

(1)先要知道三角形面积正负的判断

如上图,三角形ABC和三角形ABD。

三角形ABC用叉乘来计算的话,是正的。

三角形ABD用叉乘来计算的话,是负的。

 

(2)关于向量叉乘的坐标运算:

\large \mathbf{u\times v} = \begin{vmatrix} \mathbf{i}&\mathbf{j}&\mathbf{k}\\ u_1&u_2&u_3\\ v_1&v_2&v_3\\ \end{vmatrix} \\=(u_2v_3\mathbf{i}+u_3v_1\mathbf{j}+u_1v_2\mathbf{k}) - (u_3v_2\mathbf{i}+u_1v_3\mathbf{j}+u_2v_1\mathbf{k})\\ &=(u_2v_3 - u_3v_2)\mathbf{i} +(u_3v_1 - u_1v_3)\mathbf{j} +(u_1v_2 - u_2v_1)\mathbf{k}

如果是在二维直角坐标的时候,相当于u3=0,v3=0

也就是

\large \mathbf{u\times v} = \begin{vmatrix} \mathbf{i}&\mathbf{j}&\mathbf{k}\\ u_1&u_2&0\\ v_1&v_2&0\\ \end{vmatrix} \\=(0+0+u_1v_2\mathbf{k}) - (0+0+u_2v_1\mathbf{k})\\ &=(u_1v_2 - u_2v_1)\mathbf{k}

所以关于叉乘最后的结果,如果是正的,说明对应的三角形面积为“正”,也就是对应的为凸的。如果为“负”,也就是为凹的。

 

(3)叉乘的正负和多边形的凹凸性关系

把多边形找出固定一个点为P1,然后按给的点顺序设为P2和P3。也就是P1是固定的点,但是P2和P3对应会变的

P1P3=(x3-x1,y3-y1)和P1P2=(x2-x1,y2-y1),计算这两个向量的叉乘。

因为是考虑P2在P1P3的左右侧,所以是P1P3先,然后是P1P2

也就是

\large \large \large \large \mathbf{P_{1}P_{3}\times P_{1}P_{2}} = \begin{vmatrix} \mathbf{i}&\mathbf{j}&\mathbf{k}\\ x_3-x_1&y_3-y_1&0\\ x_2-x_1&y_2-y_1&0\\ \end{vmatrix} \\ &=((x_2-x_1)(y_3-y_1) -(y_2-y_1)(x_3-x_1))\mathbf{k}

记忆:xy-yx,然后数字就是反过来,本来下标是1312,所以反过来就是2131 2131

这样子计算,如果是正的,说明P2在P1P3的右边,角度小于180,也就是凸的。

如果是负的,说明P2在P1P3的左边,角度会大于180,那就是凹的。

 

(4)判断凹凸多边形

如果全部都是凸的,就是凸多边形;如果出现一个是凹的,那就是凹多边形。

 

(5)计算多边形面积:和凹凸性有关

利用多边形可以定一个点,比如第一个点,然后和剩下的n-1个点组成n-2个三角形,那么这个多边形的面积就是n-2个三角形的面积之和,而三角形的面积可以利用向量叉乘的一半来表示

那么此时的疑问,向量叉乘是有正负的,那么这个正负有什么印象呢?当三角形的面积为正,表示这部分是凸出去的,因为是正的,那么是加到多边形面积的一部分。若三角形的面积为负,表示这部分是凹进来的,那么相当于这部分的面积是需要少掉的,所以时需要从多表现面积中去掉的一部分。

所以假如所有的点有n个点,用x[0]-x[n-1]和y[0]-y[n-1]表示,那么定一个点,如第一个点x[0],y[0],然后比如这个点为P1,然后下面就是P1P3和P1P2进行向量叉乘,也就是xy-yx,2131 2131:

(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1),而x1,y1其实就是x[0],y[0]。而x2,y2是x[i],y[i]。x3,y3就是x[i+1],y[i+1]。

那么就是:((x[i]-x[0])*(y[i+1]-y[0])-(y[i]-y[0])*(x[i+1]-x[0]))/2.0;为面积,如果是凸为正,若是凹为负,就是相加起来。

其中 i 从1到n-2,这样子 i+1 就对应2到n-1,也就全部的点

 

(6)例子

上面的是,一个凸多边形,我们认为固定O为P1,然后按顺序给P2、P3。根据(1)中可以知道,计算出来的所有三角形面积都是正的,因此面积是所有三角形面积之和,同时面积都是+的,说明都是凸点。

 

上面的是,一个凹多边形,其中A为凹点。

总共有可以分为三个三角形,多边形面积 = 三角形OAB + 三角形OBC + 三角形OCD

其中三角形OAB是 负 的,但是三角形OBC是 正 的,刚好抵消后,就是多边形OABC的面积。

 

因此所有多边形的面积,都是分成了多个三角形的面积之和。(只是由于三角形的面积有正有负—对应凸和凹)

 

要点:

  • 使用三个点的向量叉乘,是P1,P2,P3,组成两个向量:P1P3和P1P2,以第一个点为起点P1,然后按顺序设P2和P3因为是以P1P3为边界考虑P2在哪侧,      顺序取点,值得是对所有点,固定了一个点之后,剩下的点,按逆时针取

所以是P1P3×P1P2,是计算这两个向量叉乘。

  • 还有关于向量叉乘的公式,可以推导。也可以记忆,因为是P1P3×P1P2,一定是xy-yx,接着就是反过来,

所以是:2131 2131

  • 然后计算结果为正,表示为凸;计算结果为负,表示为凹。只要有凹一定是凹多边形,要全部都是凸才是凸多边形

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

相关文章

判断点在凸多边形內

判断点在凸多边形內 判断点在凸多边形内的算法有很多,可以参考链接3,个人尝试使用了同侧法,此处也只解析这个方法 算法原理: 同侧法是判断点在向量哪一侧的一个方法,这个算法的概念是来自于参考文献一,参…

—【动态规划】凸多边形最优三角剖分

0014算法笔记——【动态规划】凸多边形最优三角剖分 分类: 算法 2013-03-05 20:10 612人阅读 评论(0) 收藏 举报 三角剖分 凸多边形最优解 动态规划 算法笔记 1、问题相关定义: (1)凸多边形的三角剖分:将凸多边形分割成互不相交的三角形的…

0014算法笔记——【动态规划】凸多边形最优三角剖分

1、问题相关定义: (1)凸多边形的三角剖分:将凸多边形分割成互不相交的三角形的弦的集合T。 (2)最优剖分:给定凸多边形P,以及定义在由多边形的边和弦组成的三角形上的权函数w。要求确定该凸多边形的三角剖分,使得该三角…

判断平面多边形的凹凸性

对于平面多边形的三角化处理也是计算机图形学里面的一个领域,最近由于项目的需要,需要对平面多边形进行剖分,特此对其作了些研究。 在对平面多边形进行处理的时候,很多时候需要知道多边形的凹凸性,本文介绍两种方法来…

最小凸多边形(凸包)

描述 给出平面上n个点的坐标&#xff0c;计算最远两点间的距离&#xff0c;以及包含所有点的最小凸多边形&#xff08;凸包&#xff09; 输入 第一行一个整数n&#xff0c;接下来是n行的实数对&#xff0c;表示n个点坐标。2<n<10000 n x1 y1 x2 y2 … xn yn 输出 输出…

计算机几何 - 如何判断一个多边形是凸多边形还是凹多边形

什么是凸多边形和凹多边形&#xff1f; 凸多边形&#xff1a;每个内角都是锐角或钝角&#xff0c;没有大于180度的内角(例如&#xff0c;三角形、正方形)。 凹多边形&#xff1a;至少有一个大于180度的内角(例如&#xff0c;五角星)。 注&#xff1a;大于180度的角又被称为优角…

多边形扩展和收缩(凸多边形和凹多边形)

目录 背景介绍&#xff1a;知识积累&#xff1a;思路点拨&#xff1a;代码区域&#xff1a; 背景介绍&#xff1a; 如下图所示&#xff0c;黑色是原多边形&#xff0c;红色是扩展的多边形&#xff0c;蓝色是收缩的多边形。这是最终的效果。 PS&#xff1a;楼主使用的是ES6的语…

什么是凸多边形和凹多边形

GIS有时需要用算法判断线段是否在多边形内&#xff1b; 最基本的出发点如下&#xff0c; 线段在多边形内的一个必要条件是线段的两个端点都在多边形内&#xff0c;但由于多边形可能为凹&#xff0c;所以这不能成为判断的充分条件&#xff1b; 就是说&#xff0c; 如果线段的两…

判断多边形是凹多边形还是凸多边形,以及求凹点

转载&#xff1a;计算机几何 - 如何判断一个多边形是凸多边形还是凹多边形_刘建宁的博客-CSDN博客_凹多边形和凸多边形的区别 重点&#xff1a; 1.凸多边形指的是多边形的每个内角小于180度。 2.凹多边形指的是至少有一个内角大于180度。 判断多边形性质 多边形内角和等于(n…

凸多边形最优三角

前言&#xff1a;大三下算法课&#xff0c;自己看的凸多边形最优三角&#xff0c;最后上台讲解&#xff0c;和子涵苗子等一起的一段时间 1.相关概念 • 凸多边形&#xff1a;一个简单多边形及其内部构成一个闭凸集时&#xff0c;则 称该简单多边形为一个凸多边形。 • 边&#…

动态规划DP——凸多边形最优三角剖分

1.问题分析 我们可以把披萨饼看作是一个凸多边形&#xff0c;凸多边形是指多边形的任意两点的连线均落在多边形的内部或边界上。 &#xff08;1&#xff09;什么是凸多边形&#xff1f; 如下图所示&#xff0c;是一个凸多边形 如下图所示&#xff0c;不是一个凸多边&#xff0c…

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

凸多边形&#xff1a; &#xff08;Convex Polygon&#xff09;可以有以下三种定义&#xff1a; 1、没有任何一个内角是优角&#xff08;Reflexive Angle&#xff09;的多边形。 2、如果把一个多边形的所有边中&#xff0c;有一条边向两方无限延长成为一直线时&#xff0c;其他…

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

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

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

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

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

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

【视频广告位叫法】

例如&#xff1a;爱奇艺&#xff0c;优酷&#xff0c;腾讯视频&#xff0c;前贴&#xff0c;中插&#xff0c;暂停贴&#xff0c;后贴广告位&#xff01;

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

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

优酷视频在网站里播放

工具/原料 准备一组代码&#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;然后在合适的位置调用。由于…