精华内容
下载资源
问答
  • 2020-02-26 20:56:21

    面积,利用微积分思想,任意多边形可以分成若干三角形,相加获得多边形面积。注意,如果是凹多边形的面积,是需要减的。
    周长,即用(x的平方加y的平方)开根号即可获得,累计相加,应注意的是,不要忘记最后一个点与起始点的线段。
    附代码:顶点数据x y 输入到1.txt文件中,如10 40

    
    #include <vector>
    //#include <opencv2\opencv.hpp>
    #include <iostream>
    #include<fstream>
    #include <string>
    #include<iomanip>
    using namespace std;
    //using namespace cv;
    struct Point 
    {
    	double x;
    	double y;
    };
    static void Examples();
    static double getPolygonArea(vector<Point> const& points);
    static double getPolygonLength(vector<Point> const& points);
    
    int main()
    {
    	Examples();
    	system("pause");
    	return 0;
    }
    void Examples()
    {//从文件读入
    	ifstream infile;
    	infile.open("1.txt");
    	if (!infile) cout << "error" << endl;
    	double x; double y;
    	//存入vector数据
    	vector<Point> points;
    	Point point;
    	while (infile >> x >> y)
    	{
    		point.x = x;
    		point.y = y;
    		points.push_back(point);
    		cout << setiosflags(ios::fixed) << setprecision(6) <<"x=" << point.x << "  y=" << point.y<<endl;
    	}
    	//计算面积
    	double area = getPolygonArea(points);
    	cout << setiosflags(ios::fixed) << setprecision(6) << "Polygon Area = " << area << endl;
    	//计算周长
    	double length = getPolygonLength(points);
    	cout << setiosflags(ios::fixed) << setprecision(6) << "length=" << length << endl;
    }
    double getPolygonArea(vector<Point> const& points)
    {
    	const int sizep = points.size();
    	if (sizep < 3)	return 0.0;
    
    	double area = points.back().x * points[0].y - points[0].x * points.back().y;
    	for (int i = 1, j = 0; i < sizep; i++,j++) {
    		area += (points[j].x * points[i].y);
    		area -= (points[i].x * points[j].y);
    	}
    
    	return fabs(0.5 * area);
    }
    double  getPolygonLength(vector<Point> const& points)
    {
    	const int sizep = points.size();
    	if (sizep < 3)	return 0.0;
    	double length = sqrt(pow((points.back().x - points[0].x), 2) + pow((points.back().y - points[0].y), 2));
    
    	for (int i = 0; i < sizep - 1; i++)
    	{
    		length += sqrt(pow((points[i].x - points[i + 1].x), 2) + pow((points[i].y - points[i + 1].y), 2));
    	}
    	return length;
    }
    
    
    更多相关内容
  • 在绘图区域绘制任意多边形,按右键即可得出多边形面积周长以及重心。
  • 计算多边形周长-----面对对象编程

    千次阅读 2018-08-05 17:39:25
    使用面对对象编程,隐藏细节,对坐标轴上的多边形周长进行计算 import math class Point: def __init__(self, x, y): self.x = x self.y = y class Polygon: def __init__(self): self.vertices = [] ...

    使用面对对象编程,隐藏细节,对坐标轴上的多边形的周长进行计算

    import math
    
    class Point:
        def __init__(self, x, y):
            self.x = x
            self.y = y
    
    class Polygon:
        def __init__(self):
            self.vertices = []
    
        def add_point(self, point):
            self.vertices.append(point)
    
        def distance(self, point1, point2):
            return math.sqrt((point1.x - point2.x)**2 + (point1.y - point2.y)**2)
    
        def perimeter(self):
            perimeter = 0
            for i in range(len(self.vertices)):
                # range是左包含,右不包含
                perimeter += self.distance(self.vertices[i], self.vertices[(i+1) % (len(self.vertices))])
            return perimeter
    
    polygon = Polygon()
    polygon.add_point(Point(1, 1))
    polygon.add_point(Point(1, 2))
    polygon.add_point(Point(3, 2))
    polygon.add_point(Point(3, 1))
    
    print(polygon.perimeter())
    
    
    

    将多边形的顶点和多边形本身都做成一个对象,利用math模块进行周长计算

    但是,从上面看,API并不是很紧凑,要是一次能接受多个所有顶点然后计算出来就好了,那么,请看改良版::

    import math
    
    class Polygon:
        def __init__(self, *args):
            self.vertices = args
    
        def distance(self, point1, point2):
            return math.sqrt((point1[0] - point2[0])**2 + (point1[1] - point2[1])**2)
    
        def perimeter(self):
            perimeter = 0
            for i in range(len(self.vertices)):
                # range是左包含,右不包含
                perimeter += self.distance(self.vertices[i], self.vertices[(i+1) % (len(self.vertices))])
            # perimeter += self.distance(self.vertices[len(self.vertices)-1], self.vertices[0])
            return perimeter
    
    polygon = Polygon((1, 1), (1, 2), (2, 2), (2, 1))
    print(polygon.perimeter())
    
    
    

    这个版本,就可以一次接受多边形所有的顶点坐标,然后计算出来周长!

    展开全文
  • 圆的周长公式 周长怎么算出来的

    千次阅读 2021-05-23 11:51:16
    周长公式是什么字母公式: C = πD = 2πR公式描述:π是圆周率,约等于3.14,公式中r为圆的半径,d为圆的直径。圆的周长 = 直径× 圆周率 = 半径×2 ×圆周率圆的周长怎么算如圆的直径是50它的周长是多少,是怎么算...

    圆周长是指在圆中内接一个正n边形,边长设为an,正边形的周长为n×an,当n不断增大的时候,正边形的周长不断接近圆的周长C的数学现象,即:n趋近于无穷,C=n×an。

    e9d3fa7aa2c464cb4444d748673a2f78.png

    圆周长公式是什么

    字母公式: C = πD = 2πR

    公式描述:π是圆周率,约等于3.14,公式中r为圆的半径,d为圆的直径。

    圆的周长 = 直径× 圆周率 = 半径×2 ×圆周率

    圆的周长怎么算

    如圆的直径是50它的周长是多少,是怎么算的?

    圆的周长公式:圆的周长C = π X 直径 = π X 半径 X 2 (π=3.14)

    当圆的直径为50时S=3.14X 50= 157

    人们在经验中发现圆的周长与直径有着一个常数的比,并把这个常数叫做圆周率。于是自然地,圆周长就是:C = π X 直径或者π X 半径 X 2 。后来的数学家们就想办法算出这个π的具体值,数学家刘徽用的是“割圆术”的方法,也就是用圆的内接正多边形和外切正多边形的周长逼近圆周长,求得圆接近192边型,求得圆周率大约是3.14。

    什么是圆周率

    割圆术的大致方法在中学的数学教材上就有。然而必须看到,它很大程度上只是计算圆周率的方法,而圆周长是C = π * d似乎已经是事实了,这一方法仅仅是定出π的值来。仔细想想就知道这样做有问题,因为他们并没有从逻辑上证明圆的周长确实正比于直径,更进一步说他们甚至对周长的概念也仅是直观上的、非理性的。

    展开全文
  • 任意多边形周长的求取

    千次阅读 2014-12-17 17:33:30
    在一个矩形方格中,随机地涂表格,求所涂多边形周长。  我们如果去求图中所有黑点所组成的多边形周长呢?小学我们就学过切割法。对于凸边形来说,其周长可以等价于一个大矩形的周长。如下图所示 ====》 即...

    问题提出:

    在一个矩形方格中,随机地涂表格,求所涂多边形的周长。


            我们如果去求图中所有黑点所组成的多边形的周长呢?小学我们就学过切割法。对于凸边形来说,其周长可以等价于一个大矩形的周长。如下图所示

    ====》

    即周长为4*5=20

            但对于凹多边形来说,这就不对了,对于这个凹字就可以看出2*(4+5)!=18。那么应该怎么求呢?对于普通程序员来说,最熟悉的是遍历了,但我可以说的是,有更简单的方法。

            我们来分析下,每个小方块矩形有4条边,但相邻的方块会有重复的边。如果我们把重复的边减掉,不就可以得到其周长了吗。先举个例子。对于两个小方块来说,重合的边为2,故其周长为2*4-2=2*(1+2)=6。其实认真想想也很容易想明白的。好了,那我们怎么求重合的边数呢?如果我们把每个小方块黑点当成一个个的点,然后相邻的黑点连成线,那就是我们所说的图了。所重合的边数,就是这个图边数的两倍,即2e(e为此图边的个数)


            根据图论的知识,所有点的度之和为边数的2倍,。设黑点数为n,则周长为。我们来上图中的周长:4*12-(1+3+2+3+4+3+2+2+4+3+2+1)=48-30=18。

            以上方法所计算的结果是包含内点的,如第一幅图中右下角有一个内点,即白点周边全是黑的。如果不想包括内点,那么可以先进行对内点处理,全变成黑点,然后再处理。对于第一幅图,如果计算内点的话,即:4*25-(1+2+3+2+2+1+3+2+2+1+1+1+3+3+1+2+3+2+2+3+2+1+1+2+2)=100-48=52。而根据切割法原理,我们可以得到周长为2*(2+4)+2(3+4)-2+2(3+4)+2(4+2)+2=12+14+14+12=52。

    代码为:

    int perimeter(int **d,int n)
    {
    //	Print(d,n);
    	int director[4][2]={{1,0},{0,-1},{-1,0},{0,1}};//方位,右-上-左-下
    	///预处理/
    	//将内点赋1
    	bool isOne=true;
    	for(int i=1;i<n-1;i++){
    		for(int j=1;j<n-1;j++){
    			if(d[i][j]==0){
    				isOne=true;
    				for(int k=0;k<4;k++){
    					if(d[i+director[k][0]][j+director[k][1]]!=1){//如果有一个方位不为1,则此点不符合条件
    						isOne=false;
    						break;
    					}
    				}
    				if(isOne)
    					d[i][j]=1;
    			}
    		}
    	}
    	int Onecount=0,
    		degree=0;
    	for(int i=1;i<n-1;i++){
    		for(int j=1;j<n-1;j++){
    			if(d[i][j]==1){
    				Onecount++;//记录值为1的点数
    				for(int k=0;k<4;k++){
    					if(d[i+director[k][0]][j+director[k][1]]==1)//记录四个方位值为1的点数
    						degree++;
    				}
    			}
    		}
    	}
    	return 4*Onecount-degree;//返回周长
    }



    展开全文
  • 圆的周长公式

    千次阅读 2021-05-20 17:02:05
    圆的周长公式:c=2πr=πd。公式中r为圆的半径,d为圆的直径。人们在经验中发现圆的周长与直径有着一个常数的比,并把这个常数叫做圆周率π。怎么算圆的周长圆的周长=圆周率×直径c=πd圆的周长=圆周率×2×半径c=2...
  • 求取多边形面积与周长 支持任意多边形,凹、凸皆可 多边形顶点输入时按顺时针顺序排列 面积法一: //**函数部分** struct Point2i { double x; double y; } // 面积 (Shoelace formula)鞋带公式S=|(x2-x1)(y3-y1)-...
  • 梯形是只有一组对边平行的四边形,平行的两边...@视觉中国梯形的周长公式是L=a+b+c+d,其中L代表梯形的周长,变量a是梯形上底边的边长,变量b是梯形下底边的边长(在梯形中,平行的两条边是梯形的底边,短的一条是...
  • 使用“鞋带公式”计算多边形面积。
  • C# 多边形面积计算公式

    千次阅读 2019-06-26 16:46:48
    C# GMap.Net 计算多边形面积 https://www.cnblogs.com/JiNerd/p/3934372.html C# 多边形面积计算公式 https://www.cnblogs.com/Khan-Sadas/p/10135717.html
  • 梯形的周长怎么计算1、已知两条侧边长和上、下底边长(1)写出梯形的周长公式周长公式是L=a+b+c+d,其中L代表梯形的周长,变量a是梯形上底边的边长,变量b是梯形下底边的边长(在梯形中,平行的两条边是梯形的底边,短...
  • 任意多边形的面积公式

    千次阅读 2016-09-28 15:25:25
    设Ω是m边形(如下图),顶点沿边界正向...多边形计算公式的计算和原点的选取没有关系,通常可以选点(0,0)或者多边形的第一个点(这个时候比较直观了,看起来就是把多边形分成一个个三角形和加起来,读者自己可以画个
  • 这是一个可以在平面坐标系中表示任意多边形并且计算其面积和周长的类。不过目前只能在第一象限计算。使用时较简便,只要把多边形的各个顶点传进去就可以了(不用按顺序)。 (其中面积的计算是参考...
  • 格林公式计算多边形的面积

    千次阅读 2018-04-25 17:01:07
    只要是边不相交的简单多边形,也就是说,不仅凸多边形,还有各种奇形怪状的凹多边形,都可以用格林公式求出面积。格林公式:若函数P(x,y), Q(x,y)在由一条或几条光滑曲线所围成的闭区域D上连续,且有连续的一阶偏导...
  • 公式中,p对应x维度上的矩,q对应y维度上的矩,阶数表示对应的部分的指数。该计算是对轮廓界上所有像素(数目为n)进行求和。如果p和q全部为0,那么m00实际上对应轮廓边界上点的数目。 虽然可以直接计算出...
  • 计算任意多边形面积的Shoelace公式如下 如代码所示,假设poly为任意四边形,四个顶点分别为,则根据Shoelace公式展开面积为。代码中的公式则为,展开相消会发现和Shoelace公式一样。 参考 ...
  • 《巧求周长》教学设计

    千次阅读 2020-12-30 17:36:06
    教学目标:1、通过活动的开展,使学生进一步理解周长的含义,熟练掌握计算周长的方法,能灵活运用周长公式解决实际问题;2、学会运用平移的思维,转换的方法,求出不规则图形的周长,经历发现问题、思考问题、探究...
  • 多边形Polygon

    千次阅读 2017-02-21 22:34:59
    多边形 大家都很熟悉,我们把他定义为 多条边首尾连接的封闭图形,关于多边形的算法有很多,比如 是否为凸多边形、直线与多边形求交、填充算法、三角化等,具体的算法原理作者就不再细讲,直接给出作者以前写的具体...
  • 五年级数学多边形面积常错经典题 一、填空(每空1分,共13分) 1.一个平行四边形的底是14厘米,高是9厘米,它的面积是( );与它等底等高的三角形面积是( ). 2.工地上有一堆钢管,横截面是一个梯形,已知最...
  • 圆的周长公式:周长L=2πr(其中r为圆的半径,π为圆周率,通常情况下取3.14)。圆周率π是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。圆的周长算法圆的周长=3.14x圆的...
  • 问题描述: 很久以前推送过这样一篇文章, Python使用matplotlib绘制正多边形逼近圆周 ...如果使用正多边形模拟圆周的话,把正多边形周长和外接圆的半径带入上面的公式,可以得到圆周率的近似值,边数越...
  • 计算任意多边形的面积(已知各顶点的坐标)

    万次阅读 多人点赞 2018-06-02 12:00:14
    如何计算一个多边形的面积,首先想到的是划分成多个小的三角形,因为三角形我们比较熟悉,而且三角形计算面积的方法也很多三角形:1. 半周长 P=(a+b+c)/22. 面积 S=aHa/2=absin(C)/2=sqrt(P(P-a)(P-b)(P-c))3. 中线 ...
  • C++ 计算多边形的面积,计算IOU

    千次阅读 2020-10-23 17:52:25
    //求任意多边形的面积 /*语法:result = polygonarea(vector<Point>&polygon, int N); 参数: polygon:多变形顶点数组 N:多边形顶点数目 返回值:多边形面积 注意: 支持任意多边形,凹、凸皆可 多边形...
  • 对输入的n个顶点来说,只用得到这n个顶点中的三个顶点,使其构成的三角形周长之和最小,其他的就啥也不用管,进行下一次循环就行了。 这个是网上找到的递推公式。 首先,从n个顶点中找到,三个顶点。 用一个嵌套的...
  • 在OpenCV里实现周长、面积计算

    千次阅读 2019-10-08 18:07:07
    在前面实现了一些轮廓的查找,接着下来要根据周长和面积对一些轮廓进行处理。比如怎么样识别轮廓是一个三角形组成呢?显然就可看它是否有三条边组成的。如果一堆三角形里,还要找一个最大面积的三角形呢?这时就需要...
  • 什么样的三角形周长最短

    千次阅读 2021-01-17 08:36:02
    展开全部面积相等时,等边三角形周长最短。设三角形面积为S,周长为62616964757a686964616fe78988e69d8331333366306466C=2p=a+b+c,易知三角形与面积关系(可作定理):S的平方=p(p-a)(p-b)(p-c)。则有S的平方=p(p-a)...
  • 周长:C=nlC=nlC=nl 边心距:r2=r12−l24r_2=\sqrt {{r_1}^2-\frac {l^2}4}r2​=r1​2−4l2​​ 外接圆半径与边长的关系: l=2r1⋅sin⁡(an2)l=2r_1\cdot\sin(\frac {a_n}2)l=2r1​⋅sin(2an​​) 把它带入边心距...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,730
精华内容 1,092
关键字:

多边形周长公式