三角行面积 行列式

double area(int ax,int ay,int bx,int by,int cx,int cy)
{
return 0.5 * ((ax*by) + (bx*cy) + (cx*ay) - (cx*by) - (bx*ay)-(ax*cy));
}
任意凸多边行 面积
任意凹多边形面积
- 右手定则 逆时针考虑 三个点的面积
- 倆条边 逆时针返回正面积,顺时针返回负面积
题意: 逆时针给出n个点,求出多边行面积
#include<iostream>
using namespace std;
double area(int ax,int ay,int bx,int by,int cx,int cy)
{
return 0.5 * ((ax*by) + (bx*cy) + (cx*ay) - (cx*by) - (bx*ay)-(ax*cy));
}
int main()
{
double ax,ay,bx,by,cx,cy;
int n;
while(cin>>n,n){
cin>>ax>>ay>>bx>>by>>cx>>cy;
n-=3;
double res=0;
res += area(ax,ay,bx,by,cx,cy);
while(n--)
{
bx=cx,by=cy;
cin>>cx>>cy;
res += area(ax,ay,bx,by,cx,cy);
}
printf("%.1lf\n", res);
}
return 0;
}