任意多边形的面积

给定多边形的顶点坐标(有序),让你来求这个多边形的面积,你会怎么做?
我们知道,任意多边形都可以分割为N个三角形,所以,如果以这为突破点,那么我们第一步就是把给定的多边形,分割为数个三角形,分别求面积,最后累加就可以了,把多边形分割为三角形的方式多种多样,在这里,我们按照如下图的方法分割:

图1

S点作为起始点(点1),a->e依次作为点2,3……。
一个三角形的面积是怎样的呢?
根据线性代数的知识,我们有如下的三角形面积公式,称之为有向面积(signed area):

将这个行列式以第三列展开可以得到:

这就是以点1、2、3构成的三角形的有向面积(点如果是顺时针给出,有向面积为负,逆时针给出,有向面积为正),那么继续我们的工作,通过三角形的面积公式,来得到多边形的面积公式:
对于图1而言,多边形的面积就是:
S(1->6)=S(1,2,3)+S(1,3,4)+S(1,4,5)+S(1,5,6)
这里我们不免有些疑问,第一,图1所给出的是凸多边形,那这种算法对于非凸多边形是否同样适用呢?比如下面这个最简单的凸多边形的图形:

图2

用刚才的划分方法的话,就会出现一个诡异的问题,那就是有一个三角形出现在了图形的外面,而另外一个又超出了多边形的范围(划分为了Sab,Sbc两个图形),那么这样再用刚才的公式求面积,结果还是正确的么?
S(1->4)=S(1,2,3)+S(1,3,4)
先公布结论,这个式子是正确的,等等,为什么?还记得刚才我提到了那个“有向面积”的概念么?忘了的话,请回头看看加重了的字。
请注意从图中看,Sab点为顺时针排列,Sbc点为逆时针排列,面积从数值上就是从Sab这个超过范围的大三角形中去掉Sbc这个小三角形,最后的结果神奇的就是多边形Sabc的面积,那么这个结论能否推广到任意多边形呢?

图3

在这里不做证明,下面给出的公式,就是任意多边形的面积公式:

转载于:https://www.cnblogs.com/wzh112233/p/4402039.html

任意多边形的面积(转)相关推荐

  1. 凸多边形面积_C++计算任意多边形的面积

    任意多边形的面积计算_拾忆楓灵的博客-CSDN博客​blog.csdn.net 计算任意多边形的面积 - tenos - 博客园​www.cnblogs.com 完美解决计算3D空间任意多边形面积_S ...

  2. C++实现——任意多边形的面积

    //求任意多边形的面积 /*语法:result = polygonarea(vector<Point>&polygon, int N); 参数: polygon:多变形顶点数组 N ...

  3. 任意多边形的面积公式

    设Ω是m边形(如下图),顶点沿边界正向排列,坐标依次为 建立Ω的多边形区域向量图. 由图知坐标原点与多边形任意相邻的两个顶点构成一个三角形,而三角形的面积可由三个顶点构成的两个平面向量的外积求得. 任 ...

  4. 计算任意多边形的面积

    转载自 对于凸多边形,很容易计算,如下图,以多边形的某一点为顶点,将其划分成几个三角形,计算这些三角形的面积,然后加起来即可.已知三角形顶点坐标,三角形面积可以利用向量的叉乘来计算. 对于凹多边形,如 ...

  5. 计算任意多边形的面积(Android)

    需求 线段:算出地图上线段的实际长度 面积:算出地图上不规则多边形的实际面积 解决方案 1.线段的实际长度 直接使用高德的AMapUtils.calculateLineDistance(latLng, ...

  6. c++如何求任意多边形的面积

    由于项目需要,求解任意不规则多边形的面积 ,想了很久,也不知道怎么叙述,直接代码展示吧 #include <iostream> #include <vector> using ...

  7. HDOJ2036改革春风吹满地笔记——任意多边形求面积

    题目地址 学习了任意多边形的计算,通过向量叉乘来进行计算. 计算公式 如果逆时针给出坐标,求得是正的,就是答案.如果顺时针给出坐标,求得是负,需要变正 具体推导过程 博客地址1 还学了海伦公式求三角形 ...

  8. [几何] 计算任意多边形的面积、中心、重心

    最近项目用到:在不规则任意多边形的中心点加一个图标.(e.g: xx地区发生暴雪,暴雪区域是多边形,给多边形中心加一个暴雪的图标) 之前的设计是,计算不规则多边形范围矩形bounds的中心点.这个比较 ...

  9. 任意多边形的面积(C语言)

    [问题描述] 给出平面上一组顶点的坐标,计算出它们所围成的凸多边形的面积. [输入形式] 从标准输入读取顶点坐标.格式为:第一行是点的个数N(3<N<15),后面紧接着N行,每行两个数字 ...

  10. 任意多边形面积计算公式

    设Ω是m边形(如下图),顶点沿边界正向排列,,坐标依次为 建立Ω的多边形区域向量图. 由图知坐标原点与多边形任意相邻的两个顶点构成一个三角形,而三角形的面积可由三个顶点构成的两个平面向量的外积求得. ...

最新文章

  1. Spring Boot中普通类获取Spring容器中的Bean
  2. 坐在宝座上圣洁羔羊 男声N重唱
  3. Java程序员从笨鸟到菜鸟之(八十一)细谈Spring(十)深入源码分析Spring之HibernateTemplate 和HibernateDaoSupport
  4. 神秘的Windows7 Send To
  5. 并发容器ConcurrentHashMap——JDK1.7与JDK1.8区别
  6. mb.php js 劫持,黑帽seo防止网站被k的js劫持跳转代码
  7. Capstone CS5210规格书|低成本HDMI转VGA方案设计
  8. 小公司网络游戏可能出现的运维事故
  9. 仿京东或淘宝的订单中心页面
  10. 基于安卓的四六级英语学习小助手app(android毕业设计)
  11. SAP解决方案(典型业务场景)
  12. 【系统分析师之路】2015年系统分析师上午综合知识真题
  13. 从拜占庭将军问题到分布式系统的一致性
  14. Vmware16支持MacOS
  15. JavaScript知识点 总结二:
  16. java生成二维码(带logo)
  17. 分享Windows版pgadmin(v4.17)
  18. Java面向对象思想、类的定义、对象的使用、对象内存图、成员变量和局部变量的区别、封装、private关键字、this关键字、构造方法、JavaBean-day06
  19. 券商接口关闭的情况下怎么做到实时量化买入?通达信破解接口可以吗?
  20. 科技赋能长三角,移动云铸造“数字鱼米之乡”

热门文章

  1. Linux音频驱动-ASOC(ALSA System on Chip)
  2. Android 进程的五种生命周期学习
  3. C++入门系列博客四 const define static关键字
  4. IPSEC 003 ---- IPSEC携手IKE,珠联璧合显神威
  5. DPDK编程指南 (1 --3)
  6. Android7.1 Audio Debug相关方法
  7. C++ STL vector详解
  8. C++小游戏——打方块
  9. htmL全栈开发项目实例,【译】基于MEAN的全栈开发实例教程6(完)
  10. 11g表名大小写 oracle_Oracle数据库总结