三角形面积可以用向量积来计算:S = 1 / 2 * ab x ac =1 / 2 * |ab| * |ac| * sin @(x表示叉乘,@表示ab和ac两边之间的夹角)
为什么要乘1/2呢?
因为ab x ac 求出来的是ab和ac为边的四边形的面积。

多边形可以拆成多个三角形来计算面积。假定有n个顶点,固定一个点就可以将它分为n-2个三角形。

S = A1 + A2 + A3 + A4
该图中固定的点为p1。n=6,分为4个部分。
A1 = 1/2 p1p2 x p1p3
A2 = 1/2 p1p3 x p1p4
A3 = 1/2 p1p4 x p1p5
A4 = 1/2 p1p5 x p1p6

公式:
假设p1(x1,y1),p2(x2,y2),p3(x3,y3)
int x1 = x2-x1;int y1 = y2-y1;
int x2 = x3-x1;int y2 = y3-y1;
A1 = x1 * y2 - x2 * y1

实现第一个图的代码:

#include<iostream>
#include <cstdio>
using namespace std;
struct point{int x,y;
};
int main(){int n;while(~scanf("%d",&n)){if(n == 0)  break;point a[101];for(int i = 0;i < n;i++){cin >> a[i].x;cin >> a[i].y;}double ans = 0;for(int i = 2;i < n;i++){int x1 = a[i-1].x - a[0].x,y1 = a[i-1].y - a[0].y;int x2 = a[i].x - a[0].x,y2 = a[i].y - a[0].y;ans += 1.0 / 2.0 * (x1*y2 - x2*y1);}printf("%.1lf\n",ans);}return 0;
}

向量叉乘计算多边形面积相关推荐

  1. python计算多边形面积_Python求凸包及多边形面积教程

    一般有两种算法来计算平面上给定n个点的凸包:Graham扫描法(Graham's scan),时间复杂度为O(nlgn):Jarvis步进法(Jarvis march),时间复杂度为O(nh),其中h ...

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

    根据百度百科的讲解: 凸多边形 现在重点讲解顶点凹凸性法(最常用也是较为简单的方法):计算总结在最后. 利用向量叉乘的相关知识进行计算:假设当前连续的三个顶点分别是P1,P2,P3.计算向量P1P3, ...

  3. 向量法计算多边形面积

    计算多边形面积的方法为将多边形分解成多个三角形,然后把这些三角形的面积相加.三角形面积为两边向量叉积除以2. 这是Java代码,目前是第3版 ,已经尽可能优化了,相比初版有25%的性能提升. /*** ...

  4. 5分钟理解外积计算多边形面积

    5分钟理解外积计算多边形面积 在矢量结构下,面状物体用其轮廓线构成的多边形表示,对于简单多边形,设有n个顶点,面积计算公式为: 公式如何得来的呢? 此公式涉及数学中的外积,外积即叉乘: "a ...

  5. matlab 二维凸包面积,PKU——3348——(凸包和计算多边形面积)

    //3348 Accepted 264K 0MS C++ 4016B//典型的凸包和计算多边形面积#include#include#include#include#include#includeusi ...

  6. 通过坐标点位,计算多边形面积

    多边形面积 本文使用三角形面积累计法计算多边形面积,就是将多边形按照一个顶点,分割成多个三角形,计算三角形的面积,累加,得到多边形的面积. 当然,这个算法也有一些缺点,当这个多边形比较奇怪的时候,不能 ...

  7. Java 根据多边形坐标点 计算多边形面积

    请仔细阅读代码注释(有肯多坑,跟着注释走没问题) 亲测有效 /*** 计算多边形面积公式** @author Lion Li* @date 2020-05-19*/ public class Poly ...

  8. python计算多边形面积

    本文提供一个简单的方法计算多边形面积,参考维基百科 实现代码: def polygon_area(polygon):"""compute polygon areapoly ...

  9. 计算几何之用叉乘求多边形面积

    一.理论基础 二维向量叉乘得到的是对应平行四边形的有向面积,所以,只要保证按照逆时针对点排序,以下的算法都是可行的: ①凸多边形,选取一个A0,从A1开始依次挑选相邻的两个点,求三角形面积,求和即可 ...

  10. matlab计算多边形面积polyarea函数

    一.语法 1.a = polyarea(x,y) 返回向量 x 和 y 中的顶点定义的二维多边形的面积. 如果 x 和 y 是相同长度的向量,则 polyarea 返回 x 和 y 定义的多边形的标量 ...

最新文章

  1. Be a person
  2. 教你如何rEFIt-让你开机免按option!
  3. 架构组件专栏 | ViewModel深入浅出
  4. 第四十五课:MVC,MVP,MVVM的区别
  5. LeetCode.917-只反转字母(Reverse Only Letters)
  6. 数据中心液体冷却技术的“机架经济学”
  7. DevExpress的TextEdit限制输入内容的格式,比如只能输入数字
  8. [Python] 函数lambda(), filter(), map(), reduce()
  9. sendfile实现文件服务器,sendfile
  10. Ubuntu 18.04 Server必须使用netplan命令配置IP地址
  11. 【渝粤教育】国家开放大学2018年秋季 0556-22T广告摄影 参考试题
  12. 2021年1月PMP考试改版
  13. linux安装ipk游戏,添加软件包 IPK
  14. 自制麦克纳姆轮遥控小车
  15. overleaf插入参考文献
  16. 【话题:工作生活】2021年工作总结--这些人,那些事。
  17. java面试,经常遇到面试官的问题
  18. FPGA入门:QuartusⅡ实现半加器,全加器,四位全加器
  19. 24类情感分析英语文本标注案例分析
  20. MG-SOFT 导入MIB文件

热门文章

  1. 济南市公安局人口数据备份库项目(数据复制)之一
  2. requests爬取图片(百思不得其姐)
  3. mac android 文件管理器,PC和Mac浏览安卓手机上文件最快的方式,只需两步
  4. Cocos--开启物理
  5. PAT Deepest Root
  6. Elasticsearch个人学习笔记
  7. 钉钉企业内微应用对现有系统的免登和消息发送
  8. 5G 室内融合定位白皮书
  9. SLAM技术课程总结
  10. 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇