http://acm.hdu.edu.cn/showproblem.php?pid=2036
参考博客:http://blog.youkuaiyun.com/ycl295644/article/details/48368639
向量的叉乘是真的牛逼,能算面积且自带正负。
规定一个正方向后,沿着该方向顺次计算任一点与相邻顶点连线及夹边所构成的三角形的矢量面积,加起来就是这个多边形的面积。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int T,n;
double x[110],y[110],ans;
int main()
{
while(scanf("%d",&n)&&n!=0)
{
ans=0;
for(int i=1;i<=n;i++)
{
scanf("%lf%lf",&x[i],&y[i]);
}
x[n+1]=x[1];y[n+1]=y[1];
for(int i=1;i<=n;i++)
{
ans+=0.5*(x[i]*y[i+1]-x[i+1]*y[i]);
}
printf("%.1lf\n",ans);
}
return 0;
}
本文介绍了一种利用向量叉乘计算平面多边形面积的方法,并提供了完整的C++代码实现。通过确定一个正方向,依次计算每个顶点与其相邻顶点构成的矢量面积之和来得到多边形的总面积。
1876

被折叠的 条评论
为什么被折叠?



