由于项目需要,求解任意不规则多边形的面积 ,想了很久,也不知道怎么叙述,直接代码展示吧
#include <iostream>
#include <vector>
using namespace std;
struct Point//定义坐标结构体
{
float x, y;
};
float intAreaCalc(vector<Point> &ptVector)//求解多边形的面积(知道多边形的顶点,按顺时针或者逆时针)
{
int i_count=vecPoly.size();
iCycle=0;
float area_temp=0.f;
for(int i=0;i<i_count;i++)
{
area_temp=area_temp+(vecPoly[i].x*vecPoly[(i+1) % i_count].y-vecPoly[(i+1) % i_count].x*vecPoly[i].y);
}
return abs(0.5*area_temp);
}
int main()
{
int n;
while(cin>>n && n!=0)输入n,决定是几边形
{
vector<Point>pt_vec;//存放多边形的各顶点
Point pt_temp;//临时的Point变量,接收输入的顶点
for(int i=0; i < n;i++)///按照顺序输入多边形的顶点坐标
{
cout<<"pt_temp.x = ";
cin>>pt_temp.x;
cout<<"pt_temp.y = ";
cin>>pt_temp.y;
pt_vec.push_back(pt_temp);
}
float area_all = intAreaCalc(pt_vec);/得到多边形的面积
cout<<"多边形的面积是:"<<area_all<<endl;
}
return 0;
}