任意给出一个三角形ΔABC,设其顶点坐标分别为A(x1, y1),B(x2, y2),C(x3, y3),那么根据线性代数的知识,ΔABC的有向面积可表示为:

其中,ΔABC顶点A、B、C逆时针给出时有向面积为正,顺时针给出时有向面积为负。如图1所示,S∆ABC>0、S∆ABD<0.

图1

我们知道任意的多边形都可以分割成多个三角形,根据以上三角形面积公式就可以求出任意多边形的面积。如图2所示的六边形顶点坐标分别为O(x0, y0),A(x1, y1),B(x2, y2),C(x3, y3),D(x4, y4),E(x5, y5),则其面积可以表示为四个三角形面积之和:S=S∆OAB+S∆OBC+S∆OCD+S∆ODE

其中:

所以

图2

在这里,前文给出的多边形示例是一个凸多边形,那么这一结论适用于凹多边形吗?下面我们看看如图3所示的凹多边形。

图3

按照上面的思路,这里的凹多边形面积表示为:S=S∆OAB+S∆OBC+S∆OCD,从前面介绍可以知道

S∆OAB=-S∆OBA<0,所以很明显上式是成立的,即此公式也适用于凹多边形。

经过以上分析,给出任意一个多边形,其顶点坐标依次为(x0,y0),(x1,y1),(x2,y2),...,(xn,yn)(其中n=2,3,4,…),则其面积可表示为:

换句话说,若已知多边形边上的每一点坐标,我们就可以求出该多边形的面积,包括如图4所示的曲线图形,当从O点到A点到O点的曲线上每一点坐标都已知时就能求出该曲线图的面积。

图4

下面是代码示例

<script>function square(x,y) {
//数组x,y分别按顺序存储各点的横、纵坐标值var sum0=0;for (var i = 0; i < x.length - 1; i++) {sum0 += (x[i] * y[i + 1] - x[i + 1] * y[i]);}var square = (Math.abs(sum0 + (x[i] * y[0]) - (x[0] * y[i]))) / 2;return square;}
</script>

任意多边形的面积计算相关推荐

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

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

  2. 求任意多边形面积-有向面积

     给定多边形的顶点坐标(有序),让你来求这个多边形的面积,你会怎么做? 我们知道,任意多边形都可以分割为N个三角形,所以,如果以这为突破点,那么我们第一步就是把给定的多边形,分割为数个三角形,分别 ...

  3. java 任意多边形面积计算

    参考文章中的介绍方法任意多边形面积计算公式 用代码的形式表达 /*** 根据鞋带定理计算* @author YiDianDian*/ public class Area {public static ...

  4. 任意多边形面积—有向面积

    给定多边形的顶点坐标(有序),让你来求这个多边形的面积,你会怎么做? 我们知道,任意多边形都可以分割为N个三角形,所以,如果以这为突破点,那么我们第一步就是把给定的多边形,分割为数个三角形,分别求面积 ...

  5. 矩形内接任意多边形抠图(可以羽化边缘)

    矩形内接任意多边形抠图(可以羽化边缘) 2017年02月12日 14:13:13 阅读数:1052 抠出一个矩形区域的内接多边接(或封闭曲线),必须都是单连通的, 如果不是单连通的,实际上需要分解成多 ...

  6. python画椭圆-python opencv圆、椭圆与任意多边形的绘制实例详解

    圆形的绘制 : OpenCV中使用circle(img,center,radius,color,thickness=None,lineType=None,shift=None)函数来绘制圆形 impo ...

  7. cv2 画多边形不填充_OpenCV python: 任意多边形填充和凸多边形填充(fillPoly和fillConvexPoly的区别,有图有真相!)...

    我们经常会使用contour或者自己圈出来的区域填上对应的值或者,所以经常会使用这样两个函数:fillPoly和fillConvexPoly,至于这两个函数有什么区别呢?小伙伴从题目中就可以看出来了, ...

  8. 一种求任意多边形内部水平方向似最大矩形的算法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在前一篇中,我们探讨了如何求凸多边形中的似最大圆,但是针对实际 ...

  9. python用circle画多边形_pythonopencv圆、椭圆与任意多边形的绘制

    圆形的绘制 : OpenCV中使用circle(img,center,radius,color,thickness=None,lineType=None,shift=None)函数来绘制圆形 impo ...

最新文章

  1. 【BZOJ】1574: [Usaco2009 Jan]地震损坏Damage
  2. 预告 | CSIG图像图形学科前沿讲习班:图神经网络
  3. 《高性能JavaScript》第一章 加载和执行
  4. MyEclipse Tomcat jar包问题
  5. ListView(列表)
  6. bzoj1225 [HNOI2001] 求正整数 约数个数定理+对数
  7. 四针角oled屏连接arduino_和孩子一起做个显示温湿度的oled屏桌面摆件[青创小电视]...
  8. 28.类型提示的实现
  9. 在线cron时间表达式转换
  10. 小学计算机课动画制作的评课稿,信息技术评课稿
  11. 【Android】全网最详细的Android入门基础教程,零基础速领
  12. 【分享】精通并发与Netty教程
  13. 新元宇宙每周连载《地球人奇游天球记》第十五回土星种菜
  14. 警方通报“济南1家6口死亡”案:男子杀害亲人后放火跳楼
  15. windows 10 添加鼠标右键快捷应用
  16. 计算机内存与外存有什么特点,为什么计算机要分内存与外存,内存与外存各有什么特点?...
  17. Roboware Studio教程 (ROS kinetic)
  18. 周鸿祎推动了中国互联网的进步
  19. adb shell获取root权限
  20. 教你如何在linux里安装应用程序

热门文章

  1. 二分图最大匹配的算法
  2. 互联网协议 — Ethernet — 网络数据报文的传输方式
  3. 【Python】基于OpenCV与UDP实现的视频流传输
  4. Linux 字符集设置
  5. fgets 函数详解
  6. excel2019如何做下拉菜单选项(数据源不占用原表上的单元格)
  7. Python 机器学习 | 超参数优化 黑盒(Black-Box)非凸优化技术实践
  8. 【fread/fwrite】C语言API之fread/fwrite函数详解
  9. bbp公式求圆周率、python_【并行计算】六种方法计算圆周率
  10. 三维重建技术 各种方法简介