精华内容
下载资源
问答
  • 根据凸多边形顶点坐标来计算面积算法与实现

    千次阅读 多人点赞 2017-01-03 23:41:16
    根据凸多边形顶点坐标来计算面积算法与实现

    本文我们来介绍一下如何利用凸多边形的所有顶点的坐标来计算其面积,并使用该算法制作一个小的示例程序。

    注:对于凹多边形的面积,可以将其分解为若干个凸多边形分别计算求和,关于凹多边形的分解算法请参考Box2d中使用b2Separate开源代码创建凹多边形及其算法分析

    求解的思路其实非常简单,对于任何凸多边形,我们以它的任意一个顶点为一个端点,连接该顶点与其他所有的顶点得到若干条线段,就可以将这个多边形切割成若干个三角形,如下图:

    【原创】根据凸多边形顶点坐标来计算面积算法与实现 - 远行的风 - 风的驿站

    对于得到的任何一个三角形,它的三个顶点都是多边形的顶点,因此其坐标是已知的(我们假定多边形的顶点坐标为已知量)。那么我们就可以利用三个顶点的坐标求解每一个三角形的面积(关于如何利用坐标求解三角形面积,请参考游戏中两个常用的数学运算推导即算法推论)。于是我们得到下面的算法步骤:

    对于给定的顶点数组vertexes,数组大小为n(即n边形),我们选取第一个顶点vertexes[0]作为起点,从i=1开始,一直循环到i=n-2,每次计算顶点vertexes[0],vertexes[i],vertexes[i+1]组成的三角形面积,将从1到n-2次循环得到的所有三角形的面积累加起来,就得到了vertexes围成的多边形的面积。

    如果给定的顶点数组不是按照顺时针或者逆时针的顺序排列,而是乱序的,可以对顶点进行重新排序,具体算法请参考Box2D中切割刚体效果的实现一览(完)中reorderVertexes的方法实现。

    下面我们来制作一个小例子,先来看一下最终的运行效果(使用的是Box2d2.3.1的模板创建的工程):

    【原创】根据凸多边形顶点坐标来计算面积算法与实现 - 远行的风 - 风的驿站

    在屏幕上任意绘制一个凸多边形,然后最上方显示出所绘制的多边形的面积。

    关于如何绘制多边形,记录所绘制的顶点以及将绘制的路径显示在场景中,请参考Box2d中使用开源的PRKit库来制作任意形状的多边形刚体的纹理。我们将绘制的颜色改为红色(因为要添加的参考网格的颜色想要使用白色,当然也可以按照自己的喜好来设置)。

    接着添加绘制参考网格的方法:

    -(void) drawGrids {

        CGSize size= [[CCDirector sharedDirector] winSize];

        floatwinHeight = size.height;

        floatwinWidth = size.width;

        intverCount = winWidth / PTM_RATIO;

        inthorCount = size.width / PTM_RATIO;

        for (int i= 1; i < verCount-5; i++) {

            ccDrawLine(ccp(0,i*PTM_RATIO), ccp(winWidth, i*PTM_RATIO));

        }

        for (int i= 1; i < horCount; i++) {

            ccDrawLine(ccp(i*PTM_RATIO,0), ccp(i*PTM_RATIO, winHeight));

        }

    }

    方法比较简单,我们知道Box2d中单位“米”与像素的转换比例就是PTM_RATIO,因此我们使用这个转换比例来作为相邻网格线的间距,这样单个网格的面积就是1平方米。同样,我们将绘制路径的取样距离也设置为PTM_RATIO,这样方便我们验证结果。

    下面两个算法一个是计算三角形面积的算法,另一个是计算多边形面积的算法:

    -(float)calculatePolygonArea:(NSMutableArray*) vertexes {

    //    vertexes= [self reorderVertexes:vertexes];

        floatresult = 0;

        intvertexCount = [vertexes count];

        CGPointstartPoint = [vertexes[0] CGPointValue];

        for (int i= 1; i < vertexCount - 1; i++) {

            result+= [self calculateTriangleArea:startPoint pointB:[vertexes[i] CGPointValue]pointC:[vertexes[i+1] CGPointValue]];

        }

        

        returnresult;

    }

     

    -(float)calculateTriangleArea:(CGPoint) pointA

                            pointB:(CGPoint)pointB

                            pointC:(CGPoint)pointC {

        floatresult =  (pointA.x * pointB.y + pointB.x * pointC.y + pointC.x *pointA.y

                         -pointA.y * pointB.x - pointB.y * pointC.x - pointC.y * pointA.x) * 0.5f;

        returnresult > 0 ? result : -result;

    }

    实现之后,在ccTouchEnded方法中调用calculatePolygonArea即可。

     

    这里我能想到的两个关于实际物理模拟的过程中的应用情景:

    一个是计算物体的质量,根据物体的密度和顶点坐标,可以计算出物体的质量。

    另一个应用场景是可以通过面积来计算在液体中物体受到的浮力,因为我们知道浮力F等于液体密度乘以重力常量再乘以物体排开液体的体积(对于2D来说,体积就变成了面积),而物体在水中是一个动态的过程,因此可以通过求解物体水面以下的面积来实时地计算浮力。

     

    好了,教程就写到这儿,如果有问题欢迎留言。

    展开全文
  • 试题 算法提高 圆的周长与面积 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述  从键盘输入一个圆的半径,输出其周长和面积 输入格式  1.0 输出格式  6.28  3.14 样例输入 2.5 样例输出 15.7 19.625 数据...

    试题 算法提高 圆的周长与面积

    资源限制
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      从键盘输入一个圆的半径,输出其周长和面积
    输入格式
      1.0
    输出格式
      6.28
      3.14
    样例输入
    2.5
    样例输出
    15.7
    19.625
    数据规模和约定
      圆周率取3.14
      输入半径范围:0<=r<1.79769e+308

    思路:圆的周长为圆周率(由于圆周率符号打不出来,所以用文字代替)、半径和2的乘积,面积为圆周率与半径平方的乘积,数据类型可以用double。

    代码如下:

    #include<iostream>
    using namespace std;
    const double T = 3.14;
    main(){
    	double r;
    	cin>>r;
    	cout<<2*T*r<<endl;
    	cout<<T*r*r;
    }
    
    展开全文
  • 结果发现基本都是复制粘贴的垃圾答案,根本找不到一个正确的答案,于是小编便查阅了显示器尺寸的计算方法,从而求出电脑显示器长宽和面积大小,下面小编给大家分享一下24寸/27寸/32寸电脑显示器长宽与面积大小算法。...

    最近小编想了解24寸和27寸显示器的尺寸有多大,以及它们的长宽各是多少,于是网上查了一下,结果发现基本都是复制粘贴的垃圾答案,根本找不到一个正确的答案,于是小编便查阅了显示器尺寸的计算方法,从而求出电脑显示器长宽和面积大小,下面小编给大家分享一下24寸/27寸/32寸电脑显示器长宽与面积大小算法。

    首先大家要知道的是,平时大家所说的显示器多少多少寸是显示器的对角线长度,并且单位是英寸,1英寸=2.54cm

    d23bcfc90c1f305b13e00b8caf22bf24.png

    知道对角线长度后就可以根据勾股定理去计算出显示器的长宽与面积。(勾股定理公式:a2+b2=c2)

    10297083ca546ca79ed501c73dd5843e.png

    假如显示器的长宽是16:9,设显示器的长为16x;则宽为9x;代入公式可得(16x)平方 + (9x)平方= c平方

    再把对角线长度代入公式即可求出未知数x;从而求出显示器的长宽与面积

    比如:

    24寸显示器(16:9)的对角线长为:24 * 2.54 = 60.96cm;

    代入公式得:(16x)平方 + (9x)平方 =60.96平方

    求得:x ≈ 3.27

    长为:16x = 16 * 3.27 = 52.33cm

    宽为:9x = 9 * 3.27 = 29.44cm

    面积为:52.33 * 29.44 ≈ 1540.6cm2

    同理:

    27寸显示器(16:9)的对角线长为:27 * 2.54 = 68.58cm;

    代入公式后可以求出显示器的长和宽分别是:58.90cm x 33.134cm;

    从而得出面积约为:1951.59平方厘米。

    32寸显示器(16:9)的对角线长为:32 * 2.54 = 81.28cm;

    代入公式后可以求出显示器的长和宽分别是:69.81cm * 39.27cm;

    从而得出面积约为:2741.44平方厘米。

    24寸/27寸/32寸电脑显示器长宽与面积大小算法就为大家介绍到这里,至于别的显示器尺寸,大家不妨去算一下吧!如果大家觉得有用那就赶紧收藏吧!

    推荐阅读:

    展开全文
  • 首先大家要知道的是,平时大家所说的显示器...代入公式可得(16x)平方+ (9x)平方= c平方 再把对角线长度代入公式即可求出未知数x;从而求出显示器的长宽与面积 1英寸=2.54厘米 比如: 24寸显示器(16:9)的对...

     

     

    首先大家要知道的是,平时大家所说的显示器多少多少寸是显示器的对角线长度,并且单位是英寸,1英寸=2.54cm

    显示器对角线.png

    注意,不算外壳!!

     

    知道对角线长度后就可以根据勾股定理去计算出显示器的长宽与面积。(勾股定理公式:a2+b2=c2)

    勾股定理公式.jpg

    假如显示器的长宽是16:9,设显示器的长尾16x;则宽为9x;代入公式可得(16x)平方 + (9x)平方= c平方

    再把对角线长度代入公式即可求出未知数x;从而求出显示器的长宽与面积

    1英寸=2.54厘米

    比如:

    24寸显示器(16:9)的对角线长为:24 * 2.54 = 60.96cm;

    代入公式得:(16x)平方 + (9x)平方 =60.96平方

    求得:x ≈ 3.27

    长为:16x = 16 * 3.27 = 52.33cm

    宽为:9x = 9 * 3.27 = 29.44cm

    面积为:52.33 * 29.44 ≈ 1540.6cm2

    同理:

    27寸显示器(16:9)的对角线长为:27 * 2.54 = 68.58cm;

    代入公式后可以求出显示器的长和宽分别是:58.90cm x 33.134cm;

    从而得出面积约为:1951.59平方厘米。

    32寸显示器(16:9)的对角线长为:32 * 2.54 = 81.28cm;

    代入公式后可以求出显示器的长和宽分别是:69.81cm * 39.27cm;

    从而得出面积约为:2741.44平方厘米。

     

     

    下面是24,27对比效果图

     

     

     

     

    展开全文
  • 机器学习算法及代码实现--回归算法

    千次阅读 2017-04-13 22:13:28
    机器学习算法及代码实现–回归算法1 线性回归 线性回归假设特征和结果满足线性关系。其实线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,...
  • 推荐算法之SVD算法

    千次阅读 2019-07-29 19:48:14
    推荐系统中的SVD算法 SVD算法优缺点 通过SVD对数据的处理,我们可以使用小得多的数据集来表示原始数据集,这样做实际上是去除了噪声和冗余信息,以此达到了优化数据、提高结果的目的。 隐形语义索引:最早的SVD...
  • 以前经常听到这些算法,很糊涂,觉得很高深啊,嗯,google了一下,简单介绍之,算是科普吧, O(∩_∩)O~ 这些都是智能优化算法,是在全局最优解很难被求出的情况下使用的一种技术,可以得到一个全局极优解。 遗传...
  • 图形算法:圆形生成算法

    万次阅读 2016-10-17 08:40:52
    在本章内容中,我们将会介绍三种常用的圆形生成算法:**勾股定理算法**、**极坐标算法**和**中点圆算法**。 [toc] #一、算法导论 --- ##1.1 四分法与八分法 > 由于圆具有对称性,只计算圆上一部分的值,再通过对称...
  • 回归算法

    2020-12-21 23:12:03
    回归算法回归算法概念1.什么是回归算法2.线性回归3.公式推导 回归算法概念 1.什么是回归算法 回归算法是一种有监督算法 回归算法是一种比较常用的机器学习算法,用来建立“解释”变量(自变量X)和观测值(因变量Y)之间...
  • RSA算法详解

    万次阅读 2019-05-16 18:27:26
    数论,数学中的皇冠,最纯粹的数学。...最近我在《程序员》杂志上连载了《跨越千年的 RSA 算法》,但受篇幅限制,只有一万字左右的内容。其实,从数论到 RSA 算法,里面的数学之美哪里是一万字能扯完的?在写作的...
  • 概率算法中的Monte carlo算法

    千次阅读 2017-10-16 10:39:05
    最近在和同学讨论研究Six Sigma(六西格玛)软件开发方法及CMMI相关问题时,遇到了需要使用Monte-Carlo算法模拟分布未知的多元一次概率密度分布问题。于是花了几天时间,通过查询相关文献资料,深入研究了一下Monte-...
  • 常用算法整合

    千次阅读 2016-10-21 13:57:31
    常用算法
  • 生成学习算法之朴素贝叶斯算法

    千次阅读 2016-09-02 21:37:02
    本文接着上一篇生成学习算法之高斯判别分析模型,来继续讲述生成学习算法。 2 朴素贝叶斯算法 在GDA中,特征向量是连续的实值向量。现在让我们讨论一种不同的学习算法,在这个算法中,是离散值。 对于我们的激励的...
  • 贪心算法

    2019-11-24 22:45:14
    贪心算法(英語:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 常见的贪心问题有:海盗分金、行商问题(最短...
  • 机器学习算法(15)之Xgboost算法

    万次阅读 多人点赞 2018-09-11 14:32:27
    前言:前一篇文章对boosting的两个方法做了阐述,这篇文章将会是对前两篇文章的深化,谈的是一个更加优化了的boostIng算法,自从2014年9月份在 Kaggle 的希格斯玻色子机器学习大赛中夺魁以来,XGBoost 与深度学习两...
  • 遗传算法

    千次阅读 2018-02-11 12:15:05
    最近写了一个亦(sang)可(xin)赛(bing)艇(kuang)的遗传算法。什么是遗传算法呢? 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟...
  • 评估算法算法评估矩阵

    千次阅读 2018-07-02 15:46:08
      要知道算法模型对未知数据表现如何,最好的评估办法是利用已经明确知道结果的数据运行生成的算法模型进行验证。此外,还可以采用重新采样评估的方法,使用新的数据来评估算法模型。   1.评估算法的方法   ...
  • KCF算法1

    2019-06-03 14:46:24
    最小输出平方误差算法MOSSE,首次将相关滤波应用于目标跟踪领域,利用离散傅里叶变换将目标和候选区域的相关度计算从空域转换到频域,使复杂的相关运算编程了矩阵的点乘运算,显著提高了运算速度。 KCF算法建立在...
  • 洪水填充算法Flood fill is an algorithm mainly used to determine a bounded area connected to a given node in a multi-dimensional array. It is a close resemblance to the bucket tool in paint programs. ...
  • 凸包算法

    千次阅读 2013-07-03 15:53:56
     其实这个算法是在一年前得某场比赛中临时抱佛脚学的,今天重新的来温习了一遍 如何来理解凸包?一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包问题了。这可以形象地想成这样:在地上放置一些不...
  • 蒙特卡洛方法,是一种以概率统计理论为指导的一类非常重要的...这里我们使用这种方法求PI的值和椭圆的面积: 求PI:假设有一半径为1的圆,那么其面积就是PI的值,1/4圆的面积就是PI/4。现在有边长为1的正方形包括这1...
  • FDA算法

    2013-11-27 00:25:05
    FDA算法,Force Directed Algorithm,一种点线图的布局算法,找了半天没有有关描述,只有根据原始英文文档的理解写一下。定义:area=W*L WL为画布的宽度和长度V 点集 E 边集k = sqrt(area/|V|)fa(z) = z*z/kfr(z) = ...
  • KNN算法解析

    千次阅读 2017-09-23 11:01:50
    KNN算法网上的给出的解释很多,源码也很多,有许多写的很好,所以这个仅作个人理解之用。KNN算法简介:KNN算法采用测量不同特征值之间的距离方法进行分类。工作原理: 存在一个样本数据集,即训练数据集,并且样本...
  • 聚类分析(K-means算法

    万次阅读 多人点赞 2018-05-28 22:05:44
    不需要类别标注的算法,直接从数据中学习模式 所以,聚类是一种 数据探索 的分析方法,他帮助我们在大量数据中探索和发现数据结构 1.2 相似度与距离度量 定义距离来度量表示相似度: 欧式距离,曼哈顿距离,...
  • 回忆多元线性回归算法:多元线性回归的构造实质上是将输入特征X进行加权运算,即y=a0+a1x1+a2x2+a3x3+…+apxp = a0+sum(ai*xi) (其中、i=1~p) AdaBoost算法【自适应增强算法】 提升树算法与线性回归模型的思想类似,...
  • 内置函数linear创建一个线性回归模型(用一种特定的算法牛顿迭代法)graphlab create会自动的选择算法,除非你告诉它使用哪一个 sqft_model = graphlab.linear_regression.create(train_data,target= 'price',...
  • 回归分析算法

    千次阅读 2018-10-29 21:21:07
    函数关系:自变量的取值确定后,因变量的值就完全确定,如圆的半径与圆的面积就构成函数关系 统计相关关系:自变量的取值确定后,因变量的值并不完全确定,通过大量的统计数据又可发现它们之间确实存在着某种关系...
  • 结果发现基本都是复制粘贴的垃圾答案,根本找不到一个正确的答案,于是小编便查阅了显示器尺寸的计算方法,从而求出电脑显示器长宽和面积大小,下面小编给大家分享一下24寸/27寸/32寸电脑显示器长宽与面积大小算法。...
  • 机器学习常见算法

    2019-09-30 23:57:21
    先说算法,其实算法是个很大的概念,除了机器学习算法,还有很多非机器学习算法,如编程里解决排序的快排、堆排、冒泡,也是算法。只是机器学习太火了,一提算法,多想到的是机器学习算法。 1.决策树 决策树,一种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,007
精华内容 4,802
关键字:

平方面积的算法