给定一系列有序的线段(比如按顺序给定每个线段的左端点坐标),求这些线段围成的多边形的面积,公式为:
  任意一个点与顺序相邻两点组成的三角形面积之和
  分为凸多边形和凹多边形分别证明:

一、凸多边形

  如下所示的凸多边形,显然是对的,因为所有三角形拼起来就是整个多边形。

  Stotal=S△ABC+S△ACD+S△ADES_{total} = S_{△ABC} + S_{△ACD} + S_{△ADE}Stotal​=S△ABC​+S△ACD​+S△ADE​,每个三角形的面积通过向量的叉乘的 1/2 计算(两个向量的叉乘几何意义就是两个向量组成的平行四边形面积),也就是 S△ABC=12∗AB→×AC→S_{△ABC} = \frac {1}{2} * \overrightarrow{AB} \times \overrightarrow{AC}S△ABC​=21​∗AB×AC (其他三角形同理)。

二、凹多边形

  凹多边形就不是那么显而易见了,因为每段线段按顺序和一个顶点相连后,很可能出现三角形覆盖面积不是多边形内部的情况出现,如下图:

  这时,公式仍然是:Stotal=S△ABC+S△ACD+S△ADES_{total} = S_{△ABC} + S_{△ACD} + S_{△ADE}Stotal​=S△ABC​+S△ACD​+S△ADE​,这是因为三角形面积是有正负的!,S△ABCS_{△ABC}S△ABC​ 的值由于 B 和 C 的顺序关系,变成了负数,也就是说,多边形面积应该是区域1 + 区域2,S△ABC=−3S_{△ABC} = -3S△ABC​=−3,S△ACD=3+2S_{△ACD} = 3 + 2S△ACD​=3+2,S△ADE=1S_{△ADE} = 1S△ADE​=1,所以 Stotal=S△ABC+S△ACD+S△ADE=−3+3+2+1=2+1S_{total} = S_{△ABC} + S_{△ACD} + S_{△ADE} = -3 + 3 + 2 + 1 = 2 + 1Stotal​=S△ABC​+S△ACD​+S△ADE​=−3+3+2+1=2+1,还是正确的。

  另外,不选用多边形上的端点也是可以的,平民内任意点都是可以的。

【几何】计算任意多边形面积相关推荐

  1. vue+d3.js计算任意多边形面积

    效果图 代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF ...

  2. python计算任意多边形面积

    看了一些方法网上的资料,也自己倒腾了一些想法. 然后看到这个大神的博客(<计算任意多边形的面积>),我就服气了. 我把代码转换为python: # 计算任意多边形的面积,顶点按照顺时针或者 ...

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

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

  4. python计算多边形的面积并保留两位小数_计算任意多边形面积的Python实现

    最近需要实现一个计算非凸多边形面积的功能,需要输入是顺次排序的多边形顶点坐标,假设输入的多边形顶点是V={v0, v1, v2, -, vn-1},则多边形的边为E={, , ,...,, }.要求输 ...

  5. 计算任意多边形面积的Python实现

    最近需要实现一个计算非凸多边形面积的功能,需要输入是顺次排序的多边形顶点坐标,假设输入的多边形顶点是V={v0, v1, v2, -, vn-1},则多边形的边为E={<v0, v1>, ...

  6. python计算多边形的面积并保留两位小数_Python计算任意多边形面积算法

    多边形面积求解的方法很多,其中比较多见的就是增加一个点P,然后分别连接多边形各个定点与P点,然后计算每个三角形的符号面积(面积有正负之分),求和就可以计算出面积. 鉴于上面的方法,我们也可以用另外一种 ...

  7. python计算图形面积的方法_Python计算任意多边形面积算法

    多边形面积求解的方法很多,其中比较多见的就是增加一个点P,然后分别连接多边形各个定点与P点,然后计算每个三角形的符号面积(面积有正负之分),求和就可以计算出面积. 鉴于上面的方法,我们也可以用另外一种 ...

  8. Java计算任意多边形面积

    任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出. 矢量面积=三角形两边矢量的叉乘.![在这里插入图片描述](https://img-blog.csdnimg.cn/ad ...

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

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

最新文章

  1. spring 项目中的一个异常
  2. centos telnet 安装 配置
  3. docker下安装Nginx的方法
  4. Spring MVC+Spring +Hibernate配置事务,但是事务不起作用
  5. 【Python】模拟面试技术面试题答
  6. 【数据挖掘】数据预处理
  7. mysql代码不熟_mysql存储过程的错误,语法不熟,找了好久没找到错误。。。
  8. zemax设计35mm镜头_ZEMAX怎样优化MTF?
  9. Python笔记-UiSelector混合定位
  10. 逆序对(洛谷-P1908)
  11. sklearn学习5-----模型评估(1) 分类度量
  12. BPS数据包常见问题
  13. CS之攻击菜单详解-后门生成与上线
  14. 删除桌面右键菜单中的英特尔核心显卡选项
  15. 计算机休眠唤醒后 网络受限,Win7系统待机/休眠被唤醒后笔记本WIFI无线网络无法连接解决方法...
  16. 睿智的目标检测12——使用labelimg进行目标检测数据集标注
  17. 逾 200 家港企参与! GoGBA大湾区发展日(广州)圆满举行
  18. 手动清除网卡IP地址的方法
  19. 分享一套响应式自适应公司网站官网源码,带文字搭建教程
  20. Squeezenet官方源代码解析

热门文章

  1. 2020-09-07-中国人寿两年java岗位一面
  2. 以AI为支点NEC欲撬动未来物联网世界
  3. pink老师 js p85思考题
  4. FPGA_PCB 设计之一3.3V-LVTTL与3.3V-LVCMOS区别
  5. 谈谈自己对目前新型冠状病毒疫情的想法
  6. linux系统(Centos 7)部署环境记录(显卡驱动、CUDA、CuDnn和conda环境安装)
  7. 【自然语言处理】【对比学习】SimCSE:基于对比学习的句向量表示
  8. 上海居住证积分办理攻略,太容易了,快来收藏!!!
  9. tensorflow Variable already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUS
  10. 逆天了word 90后:情人节巧用小小技术就俘获了女神