精华内容
下载资源
问答
  • 叉乘表示三角形面积
    千次阅读
    2016-12-10 09:44:03

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 32071 Accepted Submission(s): 16490

    Problem Description
    “ 改革春风吹满地,
    不会AC没关系;
    实在不行回老家,
    还有一亩三分地。
    谢谢!(乐队奏乐)”

    话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而且,还竟然来这么几句打油诗。
    好呀,老师的责任就是帮你解决问题,既然想种田,那就分你一块。
    这块田位于浙江省温州市苍南县灵溪镇林家铺子村,多边形形状的一块地,原本是linle 的,现在就准备送给你了。不过,任何事情都没有那么简单,你必须首先告诉我这块地到底有多少面积,如果回答正确才能真正得到这块地。
    发愁了吧?就是要让你知道,种地也是需要AC知识的!以后还是好好练吧…

    Input
    输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2… xn, yn),为了简化问题,这里的所有坐标都用整数表示。
    输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。

    Output
    对于每个测试实例,请输出对应的多边形面积,结果精确到小数点后一位小数。
    每个实例的输出占一行。

    Sample Input
    3 0 0 1 0 0 1
    4 1 0 0 1 -1 0 0 -1
    0

    Sample Output
    0.5
    2.0

    已知三角形的三角坐标,可以利用行列式求三角形的面积,设三角形的三点坐标为(x1,y1),(x2,y2),(x3,y3),
    可知其面积为(x1*y2+x2*y3+x3*y1-y1*x2-y2*x3-y3*x1)
    但要注意的是这里的面积是矢量,带正负号,在求实际问题的往往对结果用绝对值函数;
    注:如果三角形三点的坐标是按顺时针方向给出,则S为负;按逆时针方向给出,则S为正。
    AC代码:

    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    double area(int x1,int y1,int x2,int y2,int x3,int y3){
        return (double) (x1*y2+x2*y3+x3*y1-y1*x2-y2*x3-y3*x1)/2;    
    } 
    int main (){
        int n;
        while (scanf("%d",&n),n){
            int arr[102][2],i,j;
            double sum = 0;
            for (i=0;i<n;i++)
            scanf("%d%d",&arr[i][0],&arr[i][1]);
            for (j=2;j<n;j++){
                sum += area(arr[0][0],arr[0][1],arr[j-1][0],arr[j-1][1],arr[j][0],arr[j][1]);
            }
            printf("%.1lf\n",fabs(sum); 
        }
    
        return 0;
    }

    利用一个二维数组,分别做x坐标,和y坐标,将N多边形分解成若干个小三角形,依次求其面积,累加即可;

    更多相关内容
  • 第一种解法:将三角形化为梯形面积减去两个三角形面积无论三角形的顶点位置如何,△PMN总可以用一个直角梯形(或矩形)和两个直角三角形面积的和差来表示而在直角坐标系中,已知直角梯形和直角三角形的顶点的坐标,...

    第一种解法:将三角形化为梯形面积减去两个三角形面积

    户籍卡


    无论三角形的顶点位置如何,△PMN总可以用一个直角梯形(或矩形)和两个直角三角形面积的和差来表示
    而在直角坐标系中,已知直角梯形和直角三角形的顶点的坐标,其面积是比较好求的。
    下面以一种情形来说明这个方法,其它情形方法一样,表达式也一样(表达式最好加上绝对值,确保是正值)
    如图情形(P在上方,M在左下,N在右下),过P作X轴的平行线L,作MA⊥L,NB⊥L(设P在A、B之间)
    则A、B的坐标是A(c,b),B(e,b)
    所以PA=a-c,PB=e-a,AM=b-d,BN=b-f,AB=e-c
    所以S△PMN=S梯形AMNB-S△PAM-S△PBN
    =(b-d+b-f)(e-c)/2-(b-d)(a-c)/2-(b-f)(e-a)/2

    =(ad+be+cf-af-bc-de)/2

    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    const int maxn=105;
    
    int x[maxn],y[maxn];
    
    double area(int a,int b,int c,int d,int e,int f)
    {
        return (a*d+c*f+b*e-e*d-c*b-a*f)/2.0;
    }
    
    int main()
    {
        int n;
        while(cin>>n){
            if(n==0){
                break;
            }else{
                for(int i=0;i<n;i++){
                   cin>>x[i]>>y[i];
                }
                double res=0;
                for(int i=1;i<n-1;i++){
                    res+=area(x[0],y[0],x[i],y[i],x[i+1],y[i+1]);
                }
                printf("%.1lf\n",res);
            }
        }
        return 0;
    }

    第二种:使用叉乘


    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    const int maxn=105;
    
    struct point{
        int x,y;
    };
    
    point points[maxn];
    
    double cross(point a,point b)
    {
        return a.x*b.y*1.0-a.y*b.x*1.0;
    }
    
    int main()
    {
        int n;
        while(cin>>n){
            if(n==0){
                break;
            }else{
                for(int i=0;i<n;i++){
                    cin>>points[i].x>>points[i].y;
                }
                double sum=cross(points[n-1],points[0]);
                for(int i=1;i<n;i++){
                    sum+=cross(points[i-1],points[i]);
                }
                printf("%.1f\n",sum*0.5);
            }
        }
        return 0;
    }

    展开全文
  • 本文参考自:点击打开链接 利用向量积(叉积)计算三角形面积和多边形的面积 包含详细证明方法

    本文参考自:点击打开链接


    利用向量积(叉积)计算三角形的面积和多边形的面积

    利用向量积(叉积)计算三角形的面积和多边形的面积:

    向量的数量积和向量积:

    (1)  向量的数量积

     

    (1)  向量的向量积

    两个向量a和b的叉积(向量积)可以被定义为:

    在这里θ表示两向量之间的角夹角(0° ≤ θ ≤ 180°),它位于这两个矢量 所定义的平面上。

    向量积的(长度)可以解释成以ab为邻边的平行四边形面积求三角形ABC的面积,根据向量积的意义,得到:

    a=axi+ayj+azk;

    b=bxi+byj+bzk;

    a×b=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k,为了帮助记忆,利用三阶行列式,写成:

    计算任意多边形的面积:(顶点按逆时针顺序排列)

    求多边形面积最基础的方法就是用剖分法来做的,就是把多边形分成若干个三角形,然后对每个三角形求面积,求面积,在有精度要求的情况下,不要用海伦-秦九昭公式,海伦公式可能在精度损失方面会比较严重,而且计算量很大。

    最适合解决任意多边形面积的方法是:向量积法。

    顶点为Pk(k=1,2,3…n)的多边形,其顶点坐标分别为(x1,y1),(x2,y2),(x3,y3)…(xn,yn)。

    在计算几何里,我们知道,△ABC的面积就是“向量AB”和“向量AC”两个向量叉积的绝对值的一半。其正负表示三角形顶点是在右手系还是左手系。

     

     

    展开全文
  • 向量叉乘计算多边形面积

    千次阅读 2020-05-16 21:51:32
    三角形面积可以用向量积来计算:S = 1 / 2 * ab x ac =1 / 2 * |ab| * |ac| * sin @(x表示叉乘,@表示ab和ac两边之间的夹角) 为什么要乘1/2呢? 因为ab x ac 求出来的是ab和ac为边的四边形的面积。 多边形可以拆成多...

    三角形面积可以用向量积来计算:S = 1 / 2 * ab x ac =1 / 2 * |ab| * |ac| * sin @(x表示叉乘,@表示ab和ac两边之间的夹角)
    为什么要乘1/2呢?
    因为ab x ac 求出来的是ab和ac为边的四边形的面积。

    多边形可以拆成多个三角形来计算面积。假定有n个顶点,固定一个点就可以将它分为n-2个三角形。
    在这里插入图片描述
    S = A1 + A2 + A3 + A4
    该图中固定的点为p1。n=6,分为4个部分。
    A1 = 1/2 p1p2 x p1p3
    A2 = 1/2 p1p3 x p1p4
    A3 = 1/2 p1p4 x p1p5
    A4 = 1/2 p1p5 x p1p6

    公式:
    假设p1(x1,y1),p2(x2,y2),p3(x3,y3)
    int x1 = x2-x1;int y1 = y2-y1;
    int x2 = x3-x1;int y2 = y3-y1;
    A1 = x1 * y2 - x2 * y1

    实现第一个图的代码:

    #include<iostream>
    #include <cstdio>
    using namespace std;
    struct point{
        int x,y;
    };
    int main(){
        int n;
        while(~scanf("%d",&n)){
            if(n == 0)  break;
            point a[101];
            for(int i = 0;i < n;i++){
                cin >> a[i].x;
                cin >> a[i].y;
            }
            double ans = 0;
            for(int i = 2;i < n;i++){
                int x1 = a[i-1].x - a[0].x,y1 = a[i-1].y - a[0].y;
                int x2 = a[i].x - a[0].x,y2 = a[i].y - a[0].y;
                ans += 1.0 / 2.0 * (x1*y2 - x2*y1);
            }
            printf("%.1lf\n",ans);
        }
        return 0;
    }
    
    
    展开全文
  • 【ACM】向量的叉乘(求面积

    千次阅读 2017-01-14 15:09:41
    叉乘积的方向垂直于这两个向量构成的平面,大小表示这两个向量构成的平行四边形的面积。假设OP1=(x1,y1,z1),OP2=(x2,y2,z2),OP1 X OP2 = (y1z2-y2z1)i + (x2z1-x1z2)j + (x1y2-x2y1)k因此叉乘的模为 |OP1 X...
  • 叉乘坐标公式--求面积

    万次阅读 2018-10-06 23:38:02
    故已知三角形三点坐标为(x1,y1) (x2,y2) (x3,y3) 则三角形面积为=(1/2)*[(x2y3-x3y2)-(x1y3-x3y1)+(x1y2-x2y1)]
  • 三角形面积-叉积

    2022-03-15 15:18:27
    三角形面积: 题目描述 ...输出一个实数表示三角形面积。结果保留2位小数,误差不超过 10^{-2}10−2 输入输出样例 示例 1 输入 2 0 1 1 0 1 1 0 0 1 1 2 2 输出 0.50 0.00 运行限制 最大运行时间:1s
  • 一、题目:三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3,2.5) (6.4,3.1) (5.1,7.2) 求该三角形的面积。 提交小数形式表示浮点数,精确到小数点后三位。 分析思路: 三角形面积求法: 1...
  • =100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。 输入数据中所有的整数都在32位整数范围内,n=0...
  • nyoj67 三角形面积 向量叉乘

    千次阅读 2018-03-22 17:38:27
    三角形面积时间限制:3000 ms | 内存限制:65535 KB难度:2描述给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积输入每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵...
  • 向量积计算三角形面积

    万次阅读 2020-02-09 17:57:33
    向量积:数学中又称外积、叉积,物理中称矢积、叉乘,是一种在向量空间中向量的二元运算。 向量积可以被定义为: ...所以求三角形ABC的面积,根据向量积的意义,可得三角形ABC的面积S: a×b=(ay...
  • 前面两天画了点和线,今天我们来画一个最简单也是最强大的面——三角形。 本文主要讲解三角形绘制算法的推导和思路(只涉及到一点点的向量知识),最后会给出代码实现,大家放心的看下去就好。 本文源码 ????:...
  • 三角形面积

    2019-01-30 15:59:40
    给你三角形的三个坐标 让你求面积 海伦公式 公式中的边长 周长 用两点间距离公式求得   面积=相邻向量叉积的一半 设A(x1,y1) , B(x2,y2) , C(x3,y3) 设三角形面积为S 则S=(1/2)*(行列式)  |x1 y1...
  • 三角形面积的两种计算方法

    千次阅读 2019-03-01 21:46:03
    公式描述:公式中a,b,c分别为三角形三边长,为半周长,S为三角形面积。(开根号有精度损失) 第二种向量积(叉乘): 向量是一种既有方向、又有大小的量(如一个箭头表示就很形象),在平面直角坐标系中,...
  • 来源:牛客网 处女座的签到题 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言...平面上有n个点,问:平面上所有三角形面积第k大的三角形的面积是多少? 输入描述: 第一行T,表示样例的个...
  • 叉乘计算多边形面积:poj 1654 Area

    千次阅读 2015-02-25 15:20:53
    题目大意输入一串数字,不同的数字表示不同的运动方向,计算运动围成的多边形的面积。解题思路 叉乘计算多边形面积,注意将方向存于方向数组dic[x][y]中,方便直接调用; 假设走1000000步围成正方形其面积6.25×
  • (三)求三角形面积 (一)判断方向 叉乘的性质如下:  (1). P x Q > 0; 表示P在Q的顺时针方向;  (2). p x Q ; 表示P在Q的逆时针方向;  (3). P x Q = 0; 表示P和Q是共线的 P(x1,y1),Q(x2,y2), P*Q=x1y2-x2y1...
  • 对于某一点P,求出三个向量PA,PB,PC, 然后计算以下三个叉乘(^表示叉乘符号): t1 = PA^PB, t2 = PB^PC, t3 = PC^PA, 如果t1,t2,t3同号(同正或同负),那么P在三角形内部,否则在外部。 (更多在代码后) ...
  • 根据百度百科的讲解: ...计算向量P1P3,P1P2的叉乘,也可以计算三角形P1P2P3的面积,得到的结果如果大于0,则表示P2点在线段P1和P3的右侧,此时P2对应的角度小于180。然后依次计算下一个前后所组成向量的叉乘,如...
  • 对于任意一个多边形,如果已知其各个顶点的坐标 ,那么这个多边形的面积为: ,其中 。举个例子(From Wikipedia),比如下图这样一个奇奇怪怪的五边形,其顶点坐标为 根据上述公式,只需要把各点坐标带入上述公式即得...
  • 812、最大三角形面积 1)题目描述 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。 示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这五个点如下图所示。...
  • 或者:判断 点与多边形所有边组成的三角形面积和等于多边形面积。设向量AB 为(a,b,c),向量AC为(d,e,f)python 求行列式:np.linalg.det()求逆矩阵:np.linalg.inv()求特征值:np.linalg.eig()最广泛的方法:射线...
  • NumPy叉乘

    千次阅读 2020-12-10 03:56:18
    1、叉乘-数学解释向量积,数学中又称外积、叉积,物理中称矢积、叉乘,是一种在向量空间中向量的二元运算。与点积不同,它的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量和垂直。其应用也十分...
  • 来源:牛客网   处女座的签到题 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他...平面上有n个点,问:平面上所有三角形面积第k大的三角形的面积是多少? 输入描述: 第一行T,表示样例的个...
  • 它是利用三角形的三条边的边长直接求三角形面积的公式。表达式为: 其中 说明:还可以采用两向量a和b的叉乘结果取绝对值/2来计算面积(向量叉乘的绝对值(模)表示由啊和b为邻边的平行四边形的面积)。...
  • nyoj67——三角形面积

    2017-08-26 21:38:12
    三角形面积 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积 输入 每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别...
  • 1.给出三点(x1, y1) (x2, y2) (x3, y3)求三角形面积,用海伦公式太麻烦,现给出叉乘公式 S = abs(((x2-x1) * (y3-y1) - (x3-x1) * (y2-y1)) / 2),abs为取绝对值 2.给出两点(x1, y1) (x2, y2),求这两点组成得线段...
  • 1839: 三角形面积

    2018-07-23 10:16:23
    给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形面积 输入 每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间) 输入0 0 0 0 0 0表示输入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,483
精华内容 593
热门标签
关键字:

叉乘表示三角形面积

友情链接: Javamail.rar