求取多边形面积与周长

支持任意多边形,凹、凸皆可
多边形顶点输入时按顺时针顺序排列

面积法一:

//**函数部分**struct Point2i
{double x;
double y;
}
//  面积   (Shoelace formula)鞋带公式S=|(x2-x1)(y3-y1)-(x3-x1)(y2-y1)|
double cross1(Point2i pi, Point2i pj, Point2i pk)
{return (pj.x - pi.x) * (pk.y - pi.y) - (pj.y - pi.y) * (pk.x - pi.x);
}//vector<Point>存储多边形顶点
double polygon_area(vector<Point2i>& polygon)
{double area = 0.0;Point2i temp;temp.x = 0;temp.y = 0;for (int i = 0; i < polygon.size(); i++){area += cross1(temp, polygon.data()[(i)], polygon.data()[((i + 1) % polygon.size())]);}return fabs(area / 2);
}

面积法二:

//polygon:多变形顶点数组
//N:多边形顶点数目double polygonarea(vector<Point2i>& polygon, int N)//N表示多边形的边数
{int m, n;double area = 0;for (m = 0; m < N; m++) {n = (m + 1) % N;area += polygon[m].x * polygon[n].y;area -= polygon[m].y * polygon[n].x;}area /= 2;return(area < 0 ? -area : area);
}

求周长方法:

inline double calDis2_2(double x1, double y1, double x2, double y2)
{return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}double polygon_length(vector<Point2i>& polygon)
{double len = 0;Point2i pt1, pt2;long npt = polygon.size();for (int i = 0; i < npt; i++){pt1 = polygon.at(i);pt2 = polygon.at((i + 1) % npt);len += calDis2_2(pt1.x, pt1.y, pt2.x, pt2.y);}return len;
}

opencv库中有求取周长与面积的函数,其输入与面积法一相同!

求取多边形面积与周长(c++)相关推荐

  1. 问题 D: 求圆的面积和周长 山东科技大学oj c 语言

    题目描述 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14. 输入 输入一个浮点型数据,有效数字不会超过十进制的6位. 输出 输出为两行. 第一行为圆的面积,第二行为圆的周长,格式见sample ...

  2. 海伦公式用计算机语言怎么写,python中海伦公式求取三角形面积的示例

    python中海伦公式求取三角形面积的示例 发布时间:2020-12-07 10:01:44 来源:亿速云 阅读:143 作者:小新 这篇文章将为大家详细讲解有关python中海伦公式求取三角形面积的 ...

  3. C语言:求圆的面积和周长

    /*求圆的面积和周长*/ #define PI 3.14159 #include<stdio.h> void main() {float r,s,l;printf("请输入圆的半 ...

  4. java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...

    问题标题 java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题.编写一个应用程序计算圆的周长和面积,设圆的半 2019-5-23来自ip:15.196.194.53的 ...

  5. C语言基本——求圆的面积和周长

    #include <stdio.h>//求圆的面积和周长 #define PI 3.14 int main() {double r,c,s;printf("输入半径") ...

  6. 用HTML+js实现求圆的面积和周长

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  7. java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...

    导航:网站首页 > java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 . 时间:2018-11-8 java编程 1.设计一个求圆的面积和 ...

  8. 求圆的面积,周长,球的表面积,体积,圆柱的体积

    /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者:解晓东 * 完成日期:2012 年 10 月 26 日 * 版 本 号: ...

  9. 已知三个点坐标求 三角形面积 || 求任意多边形面积公式||判断点在直线的左侧还是右侧

    已知三个点坐标求 三角形面积 由A-->B-->C-->A 按逆时针方向转.(行列式书写要求) 设三角形的面积为S 则S=(1/2)*(下面行列式) |x1 y1 1| |x2 y2 ...

最新文章

  1. 大数据安全标准现状和思考
  2. OpenGL: 3D坐标到屏幕坐标的转换逻辑(gluProject的实现)(转)
  3. Android开发中adb命令的常用方法
  4. Cocos2D-x(3)——动作类备忘
  5. linux mysql.h 在哪_linux mysql找不到mysql.h
  6. matlab 移动平均_两所高校被禁用MATLAB背后,是工业设计能力之争
  7. IT信息业、金融业从业人员悲歌
  8. java socket 阻塞模式_(四) 如何将socket设置为非阻塞模式
  9. 带有示例的Python列表reverse()方法
  10. mysql 导入导出大文件
  11. 在Linux中切换用户的命令是set,Linux基础命令---切换用户su
  12. 初学JAVA随记——构造方法
  13. opencv python安装 centos_在Ubuntu中安装OpenCV-Python
  14. linux 汇编 读取软盘,读取软盘逻辑扇区的汇编实现代码
  15. 优秀的jquery插件
  16. 【安全资讯】引爆点:过去2020年勒索软件攻击激增62%
  17. 显示器分辨率如何选择,高清,1080P,2k,4k最舒服的点距
  18. 论文笔记(九):Assessing the Suitability and ... Mixed Reality Interfaces for Accurate Robot Teleoperation
  19. 前言 金融大叔的梦想
  20. 电容ESR表(一) 电容ESR表的特点、测量原理、电路分析

热门文章

  1. sonarqube更新最新包含阿里p3c的pmd插件
  2. mysql建表语句:ENGINE = InnoDB AUTO_INCREMENT=101 default charset=utf8 collate=utf8_bin;是什么意思?
  3. 项目实战——创建菜单与游戏页面(上)
  4. python排列组合结果输出_排列组合总结:将结果进行输出的实现方法
  5. 本周五截止提交申报【产业图谱+行业盘点】你是“中国数据智能产业最具商业合作价值企业”吗?超百家媒体全网扩散传播哦!...
  6. ubuntu server 修改时区
  7. 敏涵控股集团:以初心致匠心 践行实业报国梦
  8. 参加第13届全国男性健康日活动有感
  9. Java程序设计基础(第5版)自研笔记
  10. 三星打印机通过无线网连接到服务器,手把手来教你 实战三星WIFI无线打印