转载自
对于凸多边形,很容易计算,如下图,以多边形的某一点为顶点,将其划分成几个三角形,计算这些三角形的面积,然后加起来即可。已知三角形顶点坐标,三角形面积可以利用向量的叉乘来计算。

对于凹多边形,如果还是按照上述方法划分成三角形,如下图,多边形的面积 = S_ABC + S_ACD + S_ADE, 这个面积明显超过多边形的面积。



该算法还可以优化一下,对上面的式子合并一下同类项

S = S_OAB + S_OBC + S_OCD + S_ODE + S_OEA =
0.5*(A_y*(E_x-B_x) + B_y*(A_x-C_x) + C_y*(B_x-D_x) + D_y*(C_x-E_x) + E_y*(D_x-A_x))

struct Point2d
{double x;double y;Point2d(double xx, double yy): x(xx), y(yy){}
};//计算任意多边形的面积,顶点按照顺时针或者逆时针方向排列
double ComputePolygonArea(const vector<Point2d> &points)
{int point_num = points.size();if(point_num < 3)return 0.0;double s = 0;for(int i = 0; i < point_num; ++i)s += points[i].x * points[(i+1)%point_num].y - points[i].y * points[(i+1)%point_num].x;return fabs(s/2.0);
}
struct Point2d
{double x;double y;Point2d(double xx, double yy): x(xx), y(yy){}
};//计算任意多边形的面积,顶点按照顺时针或者逆时针方向排列
double ComputePolygonArea(const vector<Point2d> &points)
{int point_num = points.size();if(point_num < 3)return 0.0;double s = points[0].y * (points[point_num-1].x - points[1].x);for(int i = 1; i < point_num; ++i)s += points[i].y * (points[i-1].x - points[(i+1)%point_num].x);return fabs(s/2.0);
}

计算任意多边形的面积相关推荐

  1. 凸多边形面积_C++计算任意多边形的面积

    任意多边形的面积计算_拾忆楓灵的博客-CSDN博客​blog.csdn.net 计算任意多边形的面积 - tenos - 博客园​www.cnblogs.com 完美解决计算3D空间任意多边形面积_S ...

  2. 计算任意多边形的面积(Android)

    需求 线段:算出地图上线段的实际长度 面积:算出地图上不规则多边形的实际面积 解决方案 1.线段的实际长度 直接使用高德的AMapUtils.calculateLineDistance(latLng, ...

  3. [几何] 计算任意多边形的面积、中心、重心

    最近项目用到:在不规则任意多边形的中心点加一个图标.(e.g: xx地区发生暴雪,暴雪区域是多边形,给多边形中心加一个暴雪的图标) 之前的设计是,计算不规则多边形范围矩形bounds的中心点.这个比较 ...

  4. python计算任意多边形面积

    看了一些方法网上的资料,也自己倒腾了一些想法. 然后看到这个大神的博客(<计算任意多边形的面积>),我就服气了. 我把代码转换为python: # 计算任意多边形的面积,顶点按照顺时针或者 ...

  5. vue+d3.js计算任意多边形面积

    效果图 代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF ...

  6. Java计算任意多边形面积

    任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出. 矢量面积=三角形两边矢量的叉乘.![在这里插入图片描述](https://img-blog.csdnimg.cn/ad ...

  7. 任意多边形的面积公式

    设Ω是m边形(如下图),顶点沿边界正向排列,坐标依次为 建立Ω的多边形区域向量图. 由图知坐标原点与多边形任意相邻的两个顶点构成一个三角形,而三角形的面积可由三个顶点构成的两个平面向量的外积求得. 任 ...

  8. C++实现——任意多边形的面积

    //求任意多边形的面积 /*语法:result = polygonarea(vector<Point>&polygon, int N); 参数: polygon:多变形顶点数组 N ...

  9. python计算多边形的面积并保留两位小数_计算任意多边形面积的Python实现

    最近需要实现一个计算非凸多边形面积的功能,需要输入是顺次排序的多边形顶点坐标,假设输入的多边形顶点是V={v0, v1, v2, -, vn-1},则多边形的边为E={, , ,...,, }.要求输 ...

最新文章

  1. 在 C++中处理错误
  2. php同个用户同时只能登陆一个, 后登陆者踢掉前登陆者
  3. Linux循环登录怎么解决,文本模式循环登录! 求解决
  4. 创业必经之路——Paul Graham创业曲线
  5. 窗口尺寸,文档高,元素宽高的获取方式
  6. 微信小程序秀才成语接龙趣味答题小游戏带流量主无授权源码
  7. linux tasklet函数,tasklet和work_struct详解
  8. 淘宝网用什么样的服务器
  9. 轻松获奖五一数学建模和蓝桥杯
  10. java日常基础知识2
  11. Javascript --- 模板引擎
  12. orcal添加序列让主键的自动增长
  13. 苹果c语言怎么用windows。h_苹果12怎么用蓝牙传照片?iphone12无线传相片的详细步骤...
  14. UnicodeTOGB,能够将Unicode串转换成GB码
  15. Detecting Photoshopped Faces by Scripting Photoshop笔记
  16. 软路由服务器安装在哪个位置,软路由安装教程_软路由安装注意事项
  17. ICMAX解析无线路由器WAN口应该怎么设置
  18. preg_replace_callback函数的使用
  19. 判断对象是否可回收、垃圾回收算法
  20. 项目经理应怎么利用人工智能?

热门文章

  1. 从arduino板开始做到阿里云app控制--WeMos D1或ESP8266连接阿里云文章合集及源代码
  2. 百度输入法输入汉字却显示英文
  3. java 正则 懒惰_正则表达式的最大最小原则(就是懒惰和贪婪定理),java版本
  4. 硬件工程师成长之路(5)——板子调试
  5. Python数据分析 2.Matplotlib绘图—常用统计图
  6. Android检测模拟器
  7. Docker容器安装最快最简单__编程小黑马
  8. 海龟交易法则12_脚踏实地地测试
  9. HDU 6082 度度熊与邪恶大魔王 (完全背包)
  10. 【数字图像处理】Python使用PIL库压缩图片大小——按比例压缩