程式設計題
面狀目標重心可以透過計算梯形重心的平均值而得到。將多邊形的各個頂點投影到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 Sum_A=Sum_A+(Y[i]+Y[i+1])*(X[i]-X[i+1])/2; For(i=0,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 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即為梯形重心的橫縱座標值。 讀書是學習,使用也是學習,而且是更重要的學習。——偉人