给定点坐标求多边形面积模板
给定点坐标求多边形面积模板
方法:利用向量叉积求三角形面积的方法,把多边形分割成若干个三角形,然后求和得到多边形面积,计算时需要注意,给定的点的顺序必须是逆时针或者顺时针。
逆时针的方向是叉积的正方向,顺时针是叉积的负方向。
初始思路:对于上图,固定一个点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∑nXPi×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;
}
给定点坐标求多边形面积模板相关推荐
- c语言给坐标求多边形面积,多边形的面积问题
多边形的面积问题 设构成多边形的坐标串为(xi,yi)(i=1,2,--,n),求此多边形面积A. #include #define N 10 float Area(float (*x)[2],int ...
- 已知三个点坐标求 三角形面积 || 求任意多边形面积公式||判断点在直线的左侧还是右侧
已知三个点坐标求 三角形面积 由A-->B-->C-->A 按逆时针方向转.(行列式书写要求) 设三角形的面积为S 则S=(1/2)*(下面行列式) |x1 y1 1| |x2 y2 ...
- 已知三点坐标求三角形面积等几何图形学问题算法
算法1. 求多边形面积 设A(x1,y1),B(x2,y2),C(x3,y3) 由A–>B–>C–>A 按逆时针方向转.(行列式书写要求) 设三角形的面积为S 则S=(1/2)(下面 ...
- HDU 2036 改革春风吹满地(求多边形面积)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2036 改革春风吹满地 ...
- 三角剖分求多边形面积的交 HDU3060
1 //三角剖分求多边形面积的交 HDU3060 2 3 #include <iostream> 4 #include <cstdio> 5 #include <cstr ...
- 使用行列式公式求多边形面积
namespace SKJZ {namespace lib{public struct Point { public float x, y;}public class Polygon{/// < ...
- 已知三角形三边长求面积java_已知三角形三点坐标求三角形面积.java
已知三角形三点坐标求三角形面积 主程序代码如下: import java.util.*; public class Tringle { public static void main(String[] ...
- 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_ ...
- HDOJ-2036 求多边形面积
求给定的多边形面积,首先可以分割为数个三角形,分别求面积,最后累加即可. 对上图而言,多边形的面积就是:(S:1,a:2,b:3,c:4,d:5,e:6) S(1->6) = S(1,2,3) ...
最新文章
- IEEE技术领域大奖公布:ML先驱上榜,大陆唯一获奖学者来自清华
- OpenCV-信用卡数字识别-03
- 执行sqoop 用shell_Mysql和Hive之间通过Sqoop进行数据同步
- ASP.NET Core ActionFilter引发的一个EF异常
- C#规范整理·资源管理和序列化
- 【qduoj - 夏季学期创新题】矩形剖分(递归,dp)
- 解决openfire在使用MySQL数据库后的中文乱码问题(转)
- OSPF虚链路技术原理与注意点
- windbg使用教程: 具体实例
- Unity-TA 成长之路(一)初识渲染管线
- 国内开源的镜像网站(很全很详细)
- WIN7不能访问共享文件夹
- 滴滴出行app——网约车出行的背后(下)
- MAC10.11 Python3.6 安装Scrapy
- 祝贺光环2014年6月28日PMP考试通过率90.28%
- android语音助手 源代码,语音助理点读功能 | Android 开源项目 | Android Open Source Project...
- 六级考研单词之路-三
- 7、LiveCharts--常用属性介绍(三)
- python爬虫登录12306失败_使用python爬虫模拟12306登录方法
- 一位测试员的自白:漫漫测试路,我们因隐秘而伟大
热门文章
- BZOJ2264 : Free Goodies
- 深度学习——(12)Knowledge distillation(Demo)
- 《奇点来临》——人类进化的未来
- 声卡的故障分析与排除
- Windows 清理助手 1.6.4.7.0111[脚本库13日更新]
- 我的世界java版forge放在哪,我的世界1.8以上版本mod/forge安装图文教程_我的世界怎么装mod_游戏堡...
- 暴强人工智能加持的音频人声/伴奏提取工具
- NAT(Network Address Translator,网络地址转换)
- Photoshop里画矩形框
- 【编译原理】中间代码优化(二) 局部优化