计算多边形面积
2013-06-02 19:46
204 查看
计算多边形面积
三角形的面积
1、在解析几何里, △ABC的面积可以通过如下方法求得:点坐标 => 边长 => 海伦公式 => 面积
海伦公式: S=sqrt[p(p-a)(p-b)(p-c)],其中p=(a+b+c)/2(p为三角形的半周长)
2、 计算几何的方法
△ABC的面积就是“向量AB”和“向量AC”两个向量叉积的绝对值的一半。其正负表示三角形顶点是在右手系还是左手系。
Area(A,B,C)= 1/2 * (↑AB) × (↑AC)
得到是有向面积(有正负)
凸多边形的三角形剖分
1、 以 P1为扇面中心,连接P1Pi就得到N-2个三角形,由于凸性,保证这些三角形全在多边形内,那么,这个凸多边形的有向面积:A=sigma(Ai) (i=1…N-2)
2、 我们能把多边形分成N-2个三角形,为什么不能分成N个三角形呢? 比如,以多边形内部的一个点为扇心,就可以把多边形剖分成 N个三角形。
我们可以得到:A=sigma(Ai) ( i=1…N )
3 、既然内外都可以,为什么不设P0为坐标原点呢?
简化的公式:A=sigma([b]( Xi *Y(i+1)- X(i+1) *Yi ))/2( i=1…N )[/b]
hdu2036:改革春风吹满地
#include <stdio.h> #define _DEBUG 0 int main(){ int n,i; int f_x,f_y;//第1个点 int l_x,l_y;//上一个点 int cur_x,cur_y;//当前点 double area = 0; #if _DEBUG == 1 freopen("2036.in","r",stdin); #endif while(scanf("%d",&n) && n != 0){ area = 0;//重置为0 for(i=0;i<n;++i){ scanf("%d %d",&cur_x,&cur_y); if(i == 0){ f_x = cur_x; f_y = cur_y; }else{ area += (l_x * cur_y - cur_x * l_y);//计算当前点与上一个点以及0点组成的三角形面积 } l_x = cur_x; l_y = cur_y; } area += (cur_x * f_y - f_x * cur_y); printf("%.1f\n",area/2); } return 0; }
相关文章推荐
- 叉乘计算多边形面积:poj 1654 Area
- hdoj.4404 Worms【计算几何+圆与多边形相交面积】 2015/08/17
- HDU 2036 计算多边形面积
- 不规则多边形区域的面积计算算法
- POJ1265 Area (Pick定理,多边形面积,计算几何)
- hdu 2036 计算多边形面积
- 计算多边形核的面积、半平面交(poj1279)
- 计算几何--简单多边形与圆面积交
- 计算多边形周长和面积
- 利用向量积(叉积)计算三角形的面积和多边形的面积
- C++ 求多边形面积,(通过计算三角形)
- 计算几何_判断多边形是否存在,及面积大小
- C++代码计算任意多边形的面积
- 根据经纬度计算多边形面积
- [POJ1654]Area(计算几何-多边形的面积)
- 不规则多边形区域的面积计算算法
- HDU 2036(多边形计算面积模板)
- 经纬度坐标下的球面多边形面积计算公式
- 计算几何_多边形的有向面积和确保多边形的点是逆时针排列
- js版根据经纬度计算多边形面积(墨卡托投影)