复制代码即可使用
/*
计算多边形面积
by: 广都 gd
qq:1975767630
double get_area_number(std::vector<std::vector<double>> point_list)
参考来源
https://zhuanlan.zhihu.com/p/110025234
*/
# include <iostream>
#include <windows.h>
#include <string>
// #include <basci/basci.h> //
using namespace std;
#include <iostream>
#include <vector>
template<typename T>
std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec) {
os << "[ ";
for (const auto& element : vec) {
os << element << " ";
}
os << "]";
return os;
}
#include <iostream>
#include <vector>
template<typename T>
std::ostream& operator<<(std::ostream& os, const std::vector<std::vector<T>>& vec) {
os << "[";
for (const auto& innerVec : vec) {
os << "[";
for (const auto& element : innerVec) {
os << element << ", ";
}
os << "], ";
}
os << "]";
return os;
}
double myabs(double num){
if(num>=0){
return num;
}else{
return -num;
}
}
double get_area_number(std::vector<std::vector<double>> point_list){
// 改成死循环或许更好一点
double sum_area=0;
for (int i = 0; i < point_list.size()-1; i++) {
cout<<point_list[i]<<" | "<<point_list[i+1]<<endl;
sum_area =sum_area+ point_list[i][0]*point_list[i+1][1] - point_list[i+1][0]*point_list[i][1];
}
long ss= point_list.size()-1;
sum_area =sum_area+ point_list[ss][0]*point_list[0][1] - point_list[0][0]*point_list[ss][1];
return myabs(sum_area/2);
}
int main() {
// 需要界面面积大幅度修改
std::vector<std::vector<double>> point_list;
point_list= {{3,4},{5,11},{12,8},{9,5},{5,6}};
double sum_number = get_area_number(point_list);
cout<<"area: "<<sum_number<<endl;
cout<<point_list<<endl;
cout << endl;
system("pause");
return 0;
}
2058

被折叠的 条评论
为什么被折叠?



