1213: [视频]【计算几何】面积
时间限制: 1 Sec 内存限制: 128 MB
提交: 65 解决: 53
[提交][状态][讨论版]
题目描述
【题意】
在一个平面坐标系上随意画一条有n个点的封闭折线(按画线的顺序给出点的坐标),保证封闭折线的任意两条边都不相交。最后要计算这条路线包围的面积。
【输入格式】
第一行整数 n (3 <= n <= 1000),表示有n个点。
下来n行,每行两个整数x(横坐标)和y(纵坐标),表示点坐标(-10000
#include<iostream>
#include<cstdio>
using namespace std;
struct Point {
int x,y;};
double cross(struct Point a,struct Point b,struct Point c)
{
int x1,y1,x2,y2;
x1=b.x-a.x;
y1=b.y-a.y;
x2=c.x-a.x;
y2=c.y-a.y;
return x1*y2-x2*y1;
}
int main()
{
int n;
double srea=0;
struct Point a,b,c;
cin>>n;
cin>>a.x>>a.y;
cin>>b.x>>b.y;
for (int i=3;i<=n;i++ )
{
cin>>c.x>>c.y;
srea+=cross(a,b,c);
b=c;
}
printf("%.4lf",srea/2);
return 0;
}