给定点坐标求多边形面积模板
给定点坐标求多边形面积模板
方法:利用向量叉积求三角形面积的方法,把多边形分割成若干个三角形,然后求和得到多边形面积,计算时需要注意,给定的点的顺序必须是逆时针或者顺时针。
逆时针的方向是叉积的正方向,顺时针是叉积的负方向。
初始思路:对于上图,固定一个点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) ...
最新文章
- mysql backup_Mysqlbackup 备份详解(mysql官方备份工具)
- 性能测试关注点整理总结
- 阮一峰react demo代码研究的学习笔记 - Chrome extension - react tool
- 领域应用 | 中医临床术语系统
- TCP的三次握手和四次挥手详解
- properties配置文件的加密
- 03. 数组中重复的数字
- 完美的xslt数值函数与字符串函数
- android:xml属性集
- Python基础15_装饰器
- 微信小程序弹框如何显示右上角的关闭
- 前端性能优化之----静态文件客户端离线缓存_20191110
- JCA - 核心类和接口
- 阿里云ECS七天训练营-搭建FTP
- Android APP 快速开发教程(安卓)
- iOS--上传AppStore时遇到的10个大坑
- K8S 部署电商项目
- AJAX实验(添加+模糊查询 图书)
- 如何打动用户?携程用户体验实践分享
- 使用window小娜实现文本转语音