hdu 2036 一个数学的知识

一个求面积问题,用叉乘    ;

  • 如三角形面积       s=1/2*a×b =1/2*|a|*|b|*sinß;    
  • 这里面有一个线代公式,求面积用的,虽然不知道,转了这一题,大概会应用了;
  • 即多边形任意两点的叉积和的一半;    

/*o为座标原点,向量OA叉乘向量OB的一半就是三角形OAB的面积
且面积有方向,若向量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);
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章