一个求面积问题,用叉乘 ;
- 如三角形面积 s=1/2*a×b =1/2*|a|*|b|*sinß;
- 这里面有一个线代公式,求面积用的,虽然不知道,转了这一题,大概会应用了;
- 即多边形任意两点的叉积和的一半;
/*o为坐标原点,向量OA叉乘向量OB的一半就是三角形OAB的面积
且面积有方向,若向量OB在向量OA的顺时针方向,面积为负,逆时针方向
则为正。将所有以原点为起点的向量依次叉乘,即能将非多边形部分的面积抵消*/
且面积有方向,若向量OB在向量OA的顺时针方向,面积为负,逆时针方向
则为正。将所有以原点为起点的向量依次叉乘,即能将非多边形部分的面积抵消*/
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;
int main()
{
int n;
int a[110],b[110];
while(cin>>n && n!=0)
{
for (int i=0;i<n;i++)
cin>>a[i]>>b[i];
a[n]=a[0];
b[n]=b[0];
double ans=0;
for (int j=0;j<n;j++)
ans += a[j]*b[j+1] - b[j]*a[j+1];
if (ans<0)
ans *= -1;
printf("%.1lf\n",ans/2);
}
}