给定点坐标求多边形面积模板


方法:利用向量叉积求三角形面积的方法,把多边形分割成若干个三角形,然后求和得到多边形面积,计算时需要注意,给定的点的顺序必须是逆时针或者顺时针。
逆时针的方向是叉积的正方向,顺时针是叉积的负方向。

初始思路:对于上图,固定一个点AAA,剩下444个点组成333个三角形ABC,ACD,ADEABC,ACD,ADEABC,ACD,ADE,叉积求和即可。

进一步:我们可以通过叉积公式化简,比如AB→×BC→\overrightarrow{AB}\times \overrightarrow{BC}AB×BC,我们可以将AB→\overrightarrow{AB}AB拆成AX→+XB→\overrightarrow{AX}+\overrightarrow{XB}AX+XB。
XXX可为坐标系上任意一点,一般我们以原点OOO作为XXX在计算时最为方便。
最后我们可以化简得到:
S=∑i=0nXPi→×XPi+1→2S=\dfrac{\sum\limits_{i=0}^{n} \overrightarrow{XP_{i}}\times \overrightarrow{XP_{i+1}}}{2}S=2i=0∑n​XPi​​×XPi+1​​​
点的下标从P0P_0P0​开始,Pn=P0P_n=P_0Pn​=P0​。

如图所示,SABC=−SOAB+SOBC+SOACS_{ABC}=-S_{OAB}+S_{OBC}+S_{OAC}SABC​=−SOAB​+SOBC​+SOAC​

上面每个三角形对应两个点的叉积除以2。

因此可以用叉积计算凸多边形的面积。


代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
#define mst(a,b) memset(a,b,sizeof a)
struct P{double x,y;
}a[N];
int main(){int n;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%lf%lf",&a[i].x,&a[i].y);}a[n].x=a[0].x,a[n].y=a[0].y;double s=0;for(int i=0;i<n;i++) s+=(a[i].x*a[i+1].y-a[i+1].x*a[i].y);s/=2;//如果点是顺时针读入就 加上绝对值 s=fabs(s); printf("Area=%.1f\n",s);return 0;
}

给定点坐标求多边形面积模板相关推荐

  1. c语言给坐标求多边形面积,多边形的面积问题

    多边形的面积问题 设构成多边形的坐标串为(xi,yi)(i=1,2,--,n),求此多边形面积A. #include #define N 10 float Area(float (*x)[2],int ...

  2. 已知三个点坐标求 三角形面积 || 求任意多边形面积公式||判断点在直线的左侧还是右侧

    已知三个点坐标求 三角形面积 由A-->B-->C-->A 按逆时针方向转.(行列式书写要求) 设三角形的面积为S 则S=(1/2)*(下面行列式) |x1 y1 1| |x2 y2 ...

  3. 已知三点坐标求三角形面积等几何图形学问题算法

    算法1. 求多边形面积 设A(x1,y1),B(x2,y2),C(x3,y3) 由A–>B–>C–>A 按逆时针方向转.(行列式书写要求) 设三角形的面积为S 则S=(1/2)(下面 ...

  4. HDU 2036 改革春风吹满地(求多边形面积)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2036 改革春风吹满地 ...

  5. 三角剖分求多边形面积的交 HDU3060

    1 //三角剖分求多边形面积的交 HDU3060 2 3 #include <iostream> 4 #include <cstdio> 5 #include <cstr ...

  6. 使用行列式公式求多边形面积

    namespace SKJZ {namespace lib{public struct Point { public float x, y;}public class Polygon{/// < ...

  7. 已知三角形三边长求面积java_已知三角形三点坐标求三角形面积.java

    已知三角形三点坐标求三角形面积 主程序代码如下: import java.util.*; public class Tringle { public static void main(String[] ...

  8. pku 2954 Triangle pku 1265 Area Pick定理的应用 + 叉积求多边形面积

    Pick定理证明:http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_ ...

  9. HDOJ-2036 求多边形面积

    求给定的多边形面积,首先可以分割为数个三角形,分别求面积,最后累加即可. 对上图而言,多边形的面积就是:(S:1,a:2,b:3,c:4,d:5,e:6) S(1->6) = S(1,2,3) ...

最新文章

  1. IEEE技术领域大奖公布:ML先驱上榜,大陆唯一获奖学者来自清华
  2. OpenCV-信用卡数字识别-03
  3. 执行sqoop 用shell_Mysql和Hive之间通过Sqoop进行数据同步
  4. ASP.NET Core ActionFilter引发的一个EF异常
  5. C#规范整理·资源管理和序列化
  6. 【qduoj - 夏季学期创新题】矩形剖分(递归,dp)
  7. 解决openfire在使用MySQL数据库后的中文乱码问题(转)
  8. OSPF虚链路技术原理与注意点
  9. windbg使用教程: 具体实例
  10. Unity-TA 成长之路(一)初识渲染管线
  11. 国内开源的镜像网站(很全很详细)
  12. WIN7不能访问共享文件夹
  13. 滴滴出行app——网约车出行的背后(下)
  14. MAC10.11 Python3.6 安装Scrapy
  15. 祝贺光环2014年6月28日PMP考试通过率90.28%
  16. android语音助手 源代码,语音助理点读功能  |  Android 开源项目  |  Android Open Source Project...
  17. 六级考研单词之路-三
  18. 7、LiveCharts--常用属性介绍(三)
  19. python爬虫登录12306失败_使用python爬虫模拟12306登录方法
  20. 一位测试员的自白:漫漫测试路,我们因隐秘而伟大

热门文章

  1. BZOJ2264 : Free Goodies
  2. 深度学习——(12)Knowledge distillation(Demo)
  3. 《奇点来临》——人类进化的未来
  4. 声卡的故障分析与排除
  5. Windows 清理助手 1.6.4.7.0111[脚本库13日更新]
  6. 我的世界java版forge放在哪,我的世界1.8以上版本mod/forge安装图文教程_我的世界怎么装mod_游戏堡...
  7. 暴强人工智能加持的音频人声/伴奏提取工具
  8. NAT(Network Address Translator,网络地址转换)
  9. Photoshop里画矩形框
  10. 【编译原理】中间代码优化(二) 局部优化