求取多边形面积与周长(c++)
求取多边形面积与周长
支持任意多边形,凹、凸皆可
多边形顶点输入时按顺时针顺序排列
面积法一:
//**函数部分**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++)相关推荐
- 问题 D: 求圆的面积和周长 山东科技大学oj c 语言
题目描述 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14. 输入 输入一个浮点型数据,有效数字不会超过十进制的6位. 输出 输出为两行. 第一行为圆的面积,第二行为圆的周长,格式见sample ...
- 海伦公式用计算机语言怎么写,python中海伦公式求取三角形面积的示例
python中海伦公式求取三角形面积的示例 发布时间:2020-12-07 10:01:44 来源:亿速云 阅读:143 作者:小新 这篇文章将为大家详细讲解有关python中海伦公式求取三角形面积的 ...
- C语言:求圆的面积和周长
/*求圆的面积和周长*/ #define PI 3.14159 #include<stdio.h> void main() {float r,s,l;printf("请输入圆的半 ...
- java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...
问题标题 java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题.编写一个应用程序计算圆的周长和面积,设圆的半 2019-5-23来自ip:15.196.194.53的 ...
- C语言基本——求圆的面积和周长
#include <stdio.h>//求圆的面积和周长 #define PI 3.14 int main() {double r,c,s;printf("输入半径") ...
- 用HTML+js实现求圆的面积和周长
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...
导航:网站首页 > java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 . 时间:2018-11-8 java编程 1.设计一个求圆的面积和 ...
- 求圆的面积,周长,球的表面积,体积,圆柱的体积
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者:解晓东 * 完成日期:2012 年 10 月 26 日 * 版 本 号: ...
- 已知三个点坐标求 三角形面积 || 求任意多边形面积公式||判断点在直线的左侧还是右侧
已知三个点坐标求 三角形面积 由A-->B-->C-->A 按逆时针方向转.(行列式书写要求) 设三角形的面积为S 则S=(1/2)*(下面行列式) |x1 y1 1| |x2 y2 ...
最新文章
- 大数据安全标准现状和思考
- OpenGL: 3D坐标到屏幕坐标的转换逻辑(gluProject的实现)(转)
- Android开发中adb命令的常用方法
- Cocos2D-x(3)——动作类备忘
- linux mysql.h 在哪_linux mysql找不到mysql.h
- matlab 移动平均_两所高校被禁用MATLAB背后,是工业设计能力之争
- IT信息业、金融业从业人员悲歌
- java socket 阻塞模式_(四) 如何将socket设置为非阻塞模式
- 带有示例的Python列表reverse()方法
- mysql 导入导出大文件
- 在Linux中切换用户的命令是set,Linux基础命令---切换用户su
- 初学JAVA随记——构造方法
- opencv python安装 centos_在Ubuntu中安装OpenCV-Python
- linux 汇编 读取软盘,读取软盘逻辑扇区的汇编实现代码
- 优秀的jquery插件
- 【安全资讯】引爆点:过去2020年勒索软件攻击激增62%
- 显示器分辨率如何选择,高清,1080P,2k,4k最舒服的点距
- 论文笔记(九):Assessing the Suitability and ... Mixed Reality Interfaces for Accurate Robot Teleoperation
- 前言 金融大叔的梦想
- 电容ESR表(一) 电容ESR表的特点、测量原理、电路分析
热门文章
- sonarqube更新最新包含阿里p3c的pmd插件
- mysql建表语句:ENGINE = InnoDB AUTO_INCREMENT=101 default charset=utf8 collate=utf8_bin;是什么意思?
- 项目实战——创建菜单与游戏页面(上)
- python排列组合结果输出_排列组合总结:将结果进行输出的实现方法
- 本周五截止提交申报【产业图谱+行业盘点】你是“中国数据智能产业最具商业合作价值企业”吗?超百家媒体全网扩散传播哦!...
- ubuntu server 修改时区
- 敏涵控股集团:以初心致匠心 践行实业报国梦
- 参加第13届全国男性健康日活动有感
- Java程序设计基础(第5版)自研笔记
- 三星打印机通过无线网连接到服务器,手把手来教你 实战三星WIFI无线打印