本文主要是介绍hdu 2036 一个数学的知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一个求面积问题,用叉乘 ;
- 如三角形面积 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);}
}
这篇关于hdu 2036 一个数学的知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!