精华内容
下载资源
问答
  • 三角形面积计算

    2018-11-10 18:49:59
    任意三角形面积计算,还可以根据输入的三边长判断是不是三角形,如果不是三角形,程序会提醒
  • 20190812期Labview实现三角形面积计算与有效性判断 我们都知道a,b,c三条边满足有效三角形需要都大于零,而且任意两条边之和大于第三条边: a>0,b>0,c>0 a+b>c a+c>b b+c>a 这四个条件都要满足。...

    20190812期Labview实现三角形面积计算与有效性判断

    我们都知道a,b,c三条边满足有效三角形需要都大于零,而且任意两条边之和大于第三条边:
    a>0,b>0,c>0
    a+b>c
    a+c>b
    b+c>a
    这四个条件都要满足。

    计算三角形面积我们用海伦公式:
    面积=(s * (s-a) * (s-b) * (s-c))的平方根
    s=(a+b+c)/2;a、b、c为三角形的边。

    先来实现三角形面积计算的子VI
    在这里插入图片描述
    在这里插入图片描述主要就用到“编程->数值”中的算术运算和“编程->布尔->复合运算”

    下面我们来实现主程序三角形有效性判断与面积计算,主要实现的功能如下:
    判断输入的三条边是否有效,如果有效显示面积,LED亮;如果无效,弹出“输入三角形无效”对话框,面积显示清零。
    在这里插入图片描述
    在这里插入图片描述判断为假的窗口内:
    在这里插入图片描述
    结果展示如下:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 任意三角形面积

    2011-11-07 22:03:30
    设计一个三角形类Triangle。包含三角形三条边长的私有数据成员,另有一个重载运算符”+”,使之能计算任意多个三角形面积之和。
  • 用户输入三个边长,检验其是否能构成一个三角形(检查是否任意两边和均大于第三边),如果构成三角形计算面积并输出;如果不构成三角形,输出信息“Error Data!”。程序能连续接收两组数据,给出两组结果。 程序...

    为例2-2添加数据检验部分。用户输入三个边长,检验其是否能构成一个三角形(检查是否任意两边和均大于第三边),如果构成三角形,计算面积并输出;如果不构成三角形,输出信息“Error Data!”。程序能连续接收两组数据,给出两组结果。

    程序运行结果如下:
    输入:
    3 4 5
    1 2 3
    输出:
    6

    Error Data!

    分析:这个题与上一题类似,也需要用海伦公式解决,但是本题多了一个判断和一个多组数据

    判断的话用if结构就可以解决,不过要注意判断条件要加好()(因为if语句()中的内容是1(也就是布尔值true)才会进入之后的语句,加()就是为了把数据变成布尔形式)

    #include<iostream>
    #include<math.h>
    #include<iomanip>
    using namespace std;
    int main()
    {
        for (int i=1;i<=2;i++)
        {
            double a,b,c,s,p;
            cin>>a>>b>>c;
            if (((a+b)>c)&((a+c)>b)&((b+c)>a))
            {
                p=a+b+c;
                p=p/2;
                s=(sqrt(p*(p-a)*(p-b)*(p-c)));
                cout<<s<<endl;
            }
            else cout<<"Error Data!";
        }
        return 0;   
    }

    两组数据不多,所以有人直接用两组变量解决,我觉得打两遍很烦……所以我就用了循环体来解决这个问题每次我都重定义可以直接清空数据,如果不清空也会在读入的时候覆盖掉,没什么问题。

    展开全文
  • 任意多边形面积计算

    万次阅读 2015-09-11 10:01:03
    之前,应朋友所托,完成个四边形面积计算程序,于是不由自主考虑来个扩展,解决任意多边形面积的计算。  一开始想到了某定点的三角形剖分,但遇到凹凸多边形引发的多种情况,过于复杂,放弃。  后来想到用图形学...

    之前,应朋友所托,完成个四边形面积计算程序,于是不由自主考虑来个扩展,解决任意多边形面积的计算。

           一开始想到了某定点的三角形剖分,但遇到凹凸多边形引发的多种情况,过于复杂,放弃。

           后来想到用图形学中填充算法中的扫描线方法,切分成梯形与三角形,将交点存入活性边表后再计算面积,感觉也较复杂,放弃。

           再然后,找到个计算几何大神O’Rourke在1998年公开的成果。

    *(书名:Computational Geometry in C,第二版P20)*



    1-原理介绍

           上书中给出定理:

    任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出。

           矢量面积=三角形两边矢量的叉乘。

           如下图:

     

    按定理,多边形面积由P点与A-G的各顶点连接所构成的三角形矢量面积构成,假定多边形顶点坐标顺序为A-G,逆时针为正方向,则有如下结论:

    PAB,PBC,PCD均为顺时针,面积为负;

    PDE,PEF,PFG,PGA均未逆时针,面积为正;

    但无论正负,均可通过P点与顶点连线的矢量叉乘完成,叉乘结果中已包含面积的正负。

     

    2-程序设计

    采用C++的vector(动态数组)存储顶点坐标。

    为方便计算,直接将P点定为原点(0,0),则多边形顶点xy坐标即为向量在xy上分量。

    循环计算多边形顶点坐标每一点与下一点之间的线段,及这两点与P连线的矢量所围成的三角形面积。

    计算面积的函数代码如下:

    复制代码
    iArea=iArea+(vecPoly[iCycle].x*vecPoly[(iCycle+1) % iCount].y-vecPoly[(iCycle+1) % iCount].x*vecPoly[iCycle].y);
    int intAreaCalc(vector<myPoint> &vecPoly)
    {
        int iCycle,iCount,iArea;
        iCycle=0;
        iArea=0;
        iCount=vecPoly.size();
    
        for(iCycle=0;iCycle<iCount;iCycle++)
        {    
            iArea=iArea+(vecPoly[iCycle].x*vecPoly[(iCycle+1) % iCount].y-vecPoly[(iCycle+1) % iCount].x*vecPoly[iCycle].y);
        }
        
        return abs(0.5*iArea);
    }
    复制代码

    注意,要注意的是最后一个顶点,要与第一个顶点练成三角形,可将循环变量对顶点总数求同余,则循环过程中的最后一点+1后,自然会成为第一个顶点,上述代码中的“% iCount”即为解决此问题。

     

    完整程序,请下载工程文件。

     http://files.cnblogs.com/vbspine/sdkPoly.rar

    Ps:上述程序在Win7x64,VS2008环境下编译通过。


    转载:http://www.cnblogs.com/vbspine/archive/2013/03/28/2987818.html


     方法:转自红黑联盟:http://www.2cto.com/kf/201210/162799.html

    题目:输入一个点列,顺次连接成一个封闭多边形,计算多边形的面积

    分析:方法一,计算面积可以考虑定积分的形式,定积分有正有负,顺次求和,重复部分相互抵消,最后剩下的总面积的绝对值就是多边形的面积。

    从线性积分后的结果可以容易的看出,直线段的积分实际上就是求该直线段与x轴所围成的区域的梯形的面积Int(P1, P2) = Int(k*x + b, P1.x, P2.x) = 0.5 * (P2.x - P1.x) * (P2.y + P1.y), 斜率k = (P1.y - P2.y) / (P1.x - P2.x),截距b = P1.y - k*P1.x

    算法的复杂度为:O(N)N为顶点的个数。

    [cpp code]
    struct Point {
    float x, y;
    };
    float LinearIntegration(const Point &p1, const Point &p2) {
    return 0.5 * (p2.x - p1.x) * (p2.y + p1.y);
    }
    float ComputePolygonArea(const Point points[], int N) {
    if (points == NULL || N <= 0) return 0.0;
    float area = 0.0;
    for (int i = 0; i < N - 1; ++ i) {
    area += LinearIntegration(points[i], points[i + 1]);
    }
    area += LinearIntegration(points[N - 1], points[0]);
    return area >= 0.0 ? area : -area;
    }


    方法二,考虑到平面上知道三角形三个顶点的坐标可以运用行列式det直接求解三角形的面积。如P1(x1,y1)P2(x2,y2)P3(x3,y3),则

    S(P1, P2, P3) = det[ x1 y1 1; x2 y2 1; x3 y3 1] * 0.5 = [(x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)] * 0.5;

    可以在多边形的平面中任意的找到一个点,与多边形的每条边形成有向三角形,并顺次求取有向三角形的面积,再加和,因为是有向面积同上述定积分类似,面积有正有负可抵消重复部分,剩下的面积的绝对值即为多边形的面积。

    [cpp code]
    struct Point {
    float x, y;
    Point() {x = 0.0; y = 0.0;}
    Point(float _x, float _y) {x = _x; y = _y;}
    };
    float ComputeTriangleArea(const Point &p1, const Point &p2, const Point &p3) {
    return 0.5 * ((p2.x - p1.x) * (p3.y - p1.y) - (p3.x - p1.x) * (p2.y - p1.y));
    }
    float ComputePolygonAreaTri(const Point points[], int N) {
    if (points == NULL || N <= 0) return 0.0;
    Point p0(0.0, 0.0);
    float area = 0.0;
    for (int i = 0; i < N - 1; ++ i) {
    area += ComputeTriangleArea(p0, points[i], points[i + 1]);
    }
    area += ComputeTriangleArea(p0, points[N - 1], points[0]);
    return area >= 0.0 ? area : -area;
    }

     

    实例:

    [cpp test code]

    #include

    using namespace std;

     

    struct Point

    {  

        float x, y;  

    };  

    float LinearIntegration(const Point &p1, const Point &p2)

    {  

        return 0.5 * (p2.x - p1.x) * (p2.y + p1.y);  

    }  

    float ComputePolygonArea(const Point points[], int length)

    {  

        if (points == NULL || length <= 0) return 0.0;  

        float area = 0.0;  

        for (int i = 0; i < length - 1; ++ i)

        {  

            area += LinearIntegration(points[i], points[i + 1]);  

        }  

        area += LinearIntegration(points[length - 1], points[0]);  

        return area >= 0.0 ? area : -area;  

    }  

     

    int main()

    {

        int n;

        while(cin>>n && n!=0)

        {

           Point a[n];

           for(int i=0; i

               cin>>a[i].x>>a[i].y;

           float ans = ComputePolygonArea(a,n);

           cout<<ans<<endl;

        }

        return 0;

     

    }

    题目:http://acm.whu.edu.cn/learn/problem/detail?problem_id=1402

    Description

    Mr. Tenant is going to buy a new house. In fact, he is going to buy a piece of land and build his new house on it. In order to decide which piece of land to buy, Mr. Tenant needs a program which will give a score to each piece. Each candidate piece of land is a polygonal shape (not necessarily convex), and Mr. Tenant wonders what the best score is. Among possible scores, he considered the number of vertices, sum of angles, minimum number of required guards, and so forth. Finally, Mr. Tenant decided that the best score for a piece of land would simply be its area. Your task is to write the desired scoring program.

    Input
    The input file consists of multiple pieces of land. Each piece is a simple polygon (that is, a polygon which does not intersect itself). A polygon description starts with a positive integer number k, followed by k vertices, where each vertex consists of two coordinates (floating-point numbers): x and y. Naturally, the last vertex is connected by an edge to the first vertex. Note that each polygon can be ordered either clockwise or counterclockwise. The input ends with a "0" (the number zero).
    Output
    For each piece of land, the output should consist of exactly one line containing the score of that piece, rounded to the nearest integer number. (Halves should be rounded up, but Mr. Tenant never faced such cases.) Hint: The scoring program has to handle well degenerate cases, such as, polygons with only one or two vertices.
    Sample Input
    1 123.45 67.890
    3 0.001 0 1.999 0 0 2
    5 10 10 10 12 11 11 12 12 12.0 10.0
    0
    Sample Output

     

    0
    2
    3

    转载:http://blog.sina.com.cn/s/blog_a2ae2da90101ofk7.html

    展开全文
  • 一、类型归纳类型1 三角形的一边在坐标轴上求平面直角坐标系中三角形的面积,关键是确定底和高.其中,在坐标轴上三角形的一边可以作为底,另一点到坐标轴的...类型3 求坐标平面内任意三角形面积三角形的面积...

    一、类型归纳

    类型1 三角形的一边在坐标轴上

    平面直角坐标系中三角形的面积,关键是确定底和高.其中在坐标轴上三角形的一边可以作为底另一点到坐标轴的距离即为对应的高从而求出面积.

    f7d15ba4e95c98f3044217ec44428fb1.png

    类型2 三角形的一边与坐标轴平行

    三角形中平行于坐标轴的一边上的高平行于另一坐标轴因此可结合平行于坐标轴的线段上点的坐标特点分别求出三角形的底和高从而求出面积.

    9b3cb25c8345ebfacb65d324e7ee93ed.png

    类型3 求坐标平面内任意三角形的面积

    三角形的面积公式计算较多,而在平面直角坐标系中的三边都不与坐标轴平行的三角形面积一般会采用割补形来求解,但有时采用水平宽铅垂高面积公式会更加的方便.

    b8ea64eadbcf5beecaa4520c706dc613.png

    c02f2cdf4cea3e7e24b1354ebbdfae4b.png

    d36fc6d658ee6bf63998ebbd4a945e1b.png

    1307ac9a77210c5d72f062dddc0becd7.png

    对比以上两个方法,第一个方法简单直观学生容易理解,关键在于理解点的坐标特征以及坐标转化长度等知识,铅锤高水平宽法也是一个通法,添加了一次函数有关知识在复杂问题中比较常用.

    1699e2ba007c761750073ac0a0f6a424.png

    195d19d21f8e8f979dc47a64a3bbe374.png

    b60135d800834482f4a0e3ac52dca32a.png

    8c27983db0cc6954747e19333de44d65.png

    de0572eb454aa99abf01791e80b19c20.png

    动态图如图:

    42a2da31540909dbbfaebadb5ee7d11b.gif

    3f5d3e0ac6a373572367842a93ef1f0d.png

    解后:从以上几例可以看到,灵活运用水平宽与铅垂高公式,可以有效解决三角形面积问题,尤其是在例3,可以将P点的两种不同的位置分类统一为PE长(绝对值)问题求解,可以有效回避原本点PBD上方时,使得问题解决简洁而快捷.

    三、巩固练习

    练习1:如图,在直角坐标系中,抛物线经过点A(0,4),B(1,0),C(5,0),其对称轴与x轴相交于点M.

    (1)求抛物线的表达式和对称轴.

    (3)连接AC,在直线AC下方的抛物线上,是否存在一点N,使NAC的面积最大?若存在,请求出点N的坐标;若不存在,请说明理由.

    c42f744e8b31bcbc4d0db858498114d4.png

    练习2:在平面直角坐标系中,抛物线yax2bx5交y轴于点A,交x轴于点B(-5,0)和点C(1,0),过点AAD∥x轴交抛物线于点D.

    (1)求此抛物线的表达式;

    (2)E是抛物线上一点,且点E关于x轴的对称点在直线AD上,求△EAD的面积;

    (3)若P是直线AB下方的抛物线上的一动点,当点P运动到某一位置时,△ABP的面积最大,求出此时点P的坐标和△ABP的最大面积.

    写在文末:只要让更多的学生得到收获,也算是间断几天的编写没有浪费时间,感谢大家的支持和阅读!希望大家提出宝贵的意见和建议!

    展开全文
  • 对于任意一个多边形,如果已知其各个顶点的坐标 ,那么这个多边形的面积为: ,其中 。举个例子(From Wikipedia),比如下图这样一个奇奇怪怪的五边形,其顶点坐标为 根据上述公式,只需要把各点坐标带入上述公式即得...
  • 任意多边形的面积公式多边形计算公式的计算和原点的选取没有关系,通常可以选点(0,0)或者多边形的第一个点(这个时候比较直观了,看起来就是把多边形分成一个个三角形和加起来,读者自己可以画个图)就可以了。...
  • The Area of an Arbitrary Triangle-任意三角形面积,允许重复计算://TheAreaofanArbitraryTriangle-任意三角形面积 #include<iostream> #include<cmath> usingnamespacestd; boolIsTriangle...
  • 可以先判断是否可以构成三角形,即任意两边之和大于第三边,可以构成三角形情况下再计算,这样可以增加严谨性。二、实现代码#include #include int main(){printf("请依次输入三个边长\n");double a,b,c,p,s;scanf(...
  • 1.建立坐标系 对于任意三角形,都可以以任意一点作对边的垂线。以此边、此垂线建立直角坐标系。如下图所示。 设以此三角形建立的直角坐标系的原点为O。
  • import java.util.Scanner; public class Sanjiaoxing { public static void main(String[] args) { Scanner scan=new Scanner...System.out.println(“请输入三角形的三边”); int a=scan.nextByte(); int b=scan.n...
  • 采用运算符重载技术,设计一个名为"&"的运算符,使用该运算符...于是开始考虑圆形和三角形的相交面积计算的通用方法。 我的思路: 三角形和圆形相交的情况比较多,按交点数就有0到6个,每种情况还有很多不同的细
  • 任意多边形的面积计算

    万次阅读 多人点赞 2016-04-12 09:56:48
    任意给出一个三角形ΔABC,设其顶点坐标分别为A(x1, y1),B(x2, y2),C(x3, y3),那么根据线性代数的知识,Δ...我们知道任意的多边形都可以分割成多个三角形,根据以上三角形面积公式就可以求出任意多边形的面
  • 利用python计算任意多边形面积

    千次阅读 2019-05-24 18:10:08
    将n边形分割为n-2个三角形,利用向量叉乘法计算三角形面积分别计算每个三角形面积后累加得多边形面积。 第一次写博客,见笑了。 python代码. import math import re VERTICES_FILE = "vertices4.txt" class Point: ...
  • 书中给出定理:任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出。 矢量面积=三角形两边矢量的叉乘。 如下图: 按定理,多边形面积由P点与A-G的各顶点连接所构成的三角形...
  • 验证三角形RMN的面积是四边形ABCD面积的四分之一。  下面我们就用C语言来验证一下这个定理的正确性,由于计算机的精确度是有限的,我们采用双精度double来存储各个边长的长度及运算过程中的变量,由于double值会对...
  • 有关多边形面积计算的详细理论这里不做介绍,仅给出代码模板,并以HDU-2036作为样例 https://vjudge.net/problem/HDU-2036 //写在前面 //求任意多边形的面积可以将多边形划分为n个三角形 //然后利用叉积公式求每...
  • 计算任意三边三角形面积的算法

    千次阅读 2005-03-18 10:48:00
    Private Sub Command1_Click()Dim a, b, c As IntegerDim s As Longa = CInt(InputBox("输入三角形三边之一"))b = CInt(InputBox("输入三角形三边之二"))c = CInt(InputBox("输入三角形三边之三"))If a + b > c Or a...
  • 已知三角形顶点坐标,三角形面积可以利用向量的叉乘来计算。 对于凹多边形,如果还是按照上述方法划分成三角形,如下图,多边形的面积 = S_ABC + S_ACD + S_ADE, 这个面积明显超过多边形的面积。 我们根据...
  • matlab计算任意多边形面积

    万次阅读 2017-11-08 09:38:53
    两向量叉乘为这俩向量组成的三角形面积的两倍,所以多边形面积公式为: S = 0.5 * (OA 叉乘 OB +OB 叉乘 OC +…O** 叉乘 OA) matlab代码实现:第一步:取得坐标点数据,读取excel 第二步:计算向量叉乘 第三步...
  • 输入任意三个实数,判断他们能不能组成三角形,若能,输出是什么样的三角形(包括,等腰,等边,等边钝角,锐角直角)。
  • 三角形面积公式

    2021-01-23 17:57:21
    输入三角形的3条边a,b,c,如果能构成一个三角形,输出面积area和...三角形面积计算公式: (其中,P =(a+b+c)/2) #include"stdio.h" #include"math.h" void main() { int a,b,c,p,s,j; printf(“please input a,b and
  • #include #include main() { int a,b,c, s ; float area; scanf( " %d %d ..."不能构成三角形" ...知识点:用if—else 语句判断输入的三个数是否能构成三角形 心得体会:学会if—else的应用

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 269
精华内容 107
关键字:

任意三角形面积计算