李建松《地理信息系统原理》(第2版)考研真题整理
编程题
面状目标重心可以通过计算梯形重心的平均值而得到。将多边形的各个顶点投影到x轴上,就得到一系列梯形(见下图),所有梯形重心的联合就确定了整个多边形的重心。设多边形的顶点序列(xi,yi)按顺时针编码,则其重心的计算公式为:
其中,和是i个梯形的重心的x坐标和y坐标,Ai是梯形的面积。它们由下式得到:
图计算梯形的重心位置
请用编程(VB或VC)方法实现上述计算。[中
山大学2011、2012年研]
答:使用C++语言,在VC++6.0平台或Visual Studio 2013 IDE上编译,计算梯形面积的具体程序(伪代码)如下所示:
INPUT Array X[n],Y[n];
double Sum_A=0.0;
double Sum_YA=0.0;
double Sum_XA=0.0;
double XX,YY;
For(int i=0,i<n,i++)
Sum_A=Sum_A+(Y[i]+Y[i+1])*(X[i]-X[i+1])/2;
For(i=0,i<n,i++)
Sum_XA=Sum_XA+(X[i+1]^2+X[i+1]X[i]+X[i]^2)*(Y[i+1]-Y[i])/6;
For(i=0,i<n,i++)
Sum_YA=Sum_YA+(Y[i+1]^2+Y[i+1]Y[i]+Y[i]^2)*(X[i+1]-X[i])/6;
XX=Sum_XA/Sum_A;
YY=Sum_YA/Sum_A;
OUTPUT XX,YY;
END
注:XX,YY即为梯形重心的横纵坐标值。
读书是学习,使用也是学习,而且是更重要的学习。——伟人
发表评论