任意多边形的面积公式

设Ω是m边形(如下图),顶点沿边界正向排列,,坐标依次为


建立Ω的多边形区域向量图。

由图知坐标原点与多边形任意相邻的两个顶点构成一个三角形,而三角形的面积可由三个顶点构成的两个平面向量的外积求得。

任意多边形的面积公式


多边形计算公式的计算和原点的选取没有关系,通常可以选点(0,0)或者多边形的第一个点(这个时候比较直观了,看起来就是把多边形分成一个个三角形和加起来,读者自己可以画个图)就可以了。






//任意多边形的面积计算

#include <iostream>
#include <utility>
#include <cmath>
using std::cout;
using std::cin;
using std::endl;

typedef std::pair<double ,double> point;

#pragma warning(disable:4244)

double det(point p0,point p1,point p2)
{
	return (p1.first-p0.first)*(p2.second-p0.second)-(p1.second-p0.second)*(p2.first-p0.first);
}

double ploygon_area(int n,point p[])  
{
	double s=0.0f;
	int i=1;
	for(;i < n-1;i++)
		s += det(p[0],p[i],p[i+1]);
	return 0.5*fabs(s);
}

int main(int argc, char *argv[])
{

	int i,n;
	double s;
	point *points = NULL;

	cout<<"Enter the number of edges of the polygon <n>:";
	cin>>n;
	if(n < 2){
		exit(1);
	}

	points = (point *)malloc(n*sizeof(point));

	for(i=0; i<n; i++){
		cout<<endl<<"points["<<i<<"]=";
		cin>>points[i].first>>points[i].second;
	}

	s=ploygon_area(n, points);
	cout<<"The area is:"<<s<<std::endl;

	if(points)
		free(points);

	return 1;
}


  • 19
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
五年级数学多边形面积常错经典题 一、填空(每空1分,共13分) 1.一个平行四边形的底是14厘米,高是9厘米,它的面积是(    );与它等底等高的三角形面积是(    ). 2.工地上有一堆钢管,横截面是一个梯形,已知最上面一层有2根,最下面一层有12根,共堆了11层,这堆钢管共有( )根。 3.一个三角形比与它等底等高的平行四边的面积少30平方厘米,则这个三角形的面积是( )。 4.一个三角形的面积是4.5平方分米,底是5分米,高是( )分米。 5.一个等边三角形的周长是18厘米,高是3.6厘米,它的面积是( )平方厘米。 二、判定题(每题2分,共10分) 1.两个面积相等的三角形,一定能拼成一个平行四边形.(    ) 2.平行四边形的面积等于一个三角形面积的2倍.(    ) 3.两个完全一样的梯形,能拼成一个平行四边形.(    ) 4.把一个长方形的框架挤压成一个平行四边形,面积减少了.(    ) 5.两个三角形面积相等,底和高也一定相等。( ) 三、选择题(每题2分,共8分) 1.等边三角形一定是 _______ 三角形.[    ] A.锐角;      B.直角;      C.钝角 2.两个完全一样的锐角三角形,可以拼成一个 ________[    ] A.长方形;     B.正方形; C.平行四边形;    D.梯形 3.把一个平行四边形任意分割成两个梯形,这两个梯形中 ________总是相等的.[    ] A.高;    B.面积;     C.上下两底的和 四、填空。 1.在推导平行四边形面积计算公式时,可把平行四边形通过割补平移转化为( )形去 推导,推导三角形面积计算公式时,可把两个完全一样的三角形拼成一个(

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值