精华内容
下载资源
问答
  • HDU 2036 叉乘三角形面积

    千次阅读 2016-12-10 09:44:03
    已知三角形的三角坐标,可以利用行列式求三角形面积,设三角形的三点坐标为(x1,y1),(x2,y2),(x3,y3), 可知其面积为(x1*y2+x2*y3+x3*y1-y1*x2-y2*x3-y3*x1) 但要注意的是这里的面积是矢量,带正负...

    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多边形分解成若干个小三角形,依次求其面积,累加即可;

    展开全文
  • 三角形面积可以用向量积来计算: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;
    }
    
    
    展开全文
  • nyoj67 三角形面积 向量叉乘

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

    三角形面积

    时间限制: 3000 ms  |  内存限制: 65535 KB
    难度: 2
    描述
    给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积
    输入
    每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间)
    输入0 0 0 0 0 0表示输入结束
    测试数据不超过10000组
    输出
    输出这三个点所代表的三角形的面积,结果精确到小数点后1位(即使是整数也要输出一位小数位)
    样例输入
    0 0 1 1 1 3
    0 1 1 0 0 0
    0 0 0 0 0 0
    样例输出
    1.0
    0.5
    #include<stdio.h>
    #include<math.h>
    int main()
    {
    	int x1,y1,x2,y2,x3,y3;
    	double sum;
    	while(scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)&&x1+y1+x2+y2+x3+y3!=0)
    	{
    		sum=(double)((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1))/2;//向量叉乘 
    		sum=fabs(sum);//返回绝对值
    		printf("%.1lf\n",sum); 
    	}
    	return 0;
    }


    展开全文
  • 叉乘计算多边形面积:poj 1654 Area

    千次阅读 2015-02-25 15:20:53
    题目大意输入一串数字,不同的数字表示不同的运动方向,计算运动围成的多边形的面积。解题思路 叉乘计算多边形面积,注意将方向存于方向数组dic[x][y]中,方便直接调用; 假设走1000000步围成正方形其面积6.25×

    这里写图片描述

    这里写图片描述

    矢量积a×b的计算结果是垂直于a,b向量的矢量,其大小|a×b|=|a|·|b|·sin(a,b)=x1·y2-x2·y1模值的几何意义是以a,b为边的平行四边形的面积,利用向量的叉乘可以计算多边形的面积。

    坐标表达式|a×b|=x1·y2-x2·y1.

    题目大意

    输入一串数字,不同的数字表示不同的运动方向,计算运动围成的多边形的面积。

    解题思路

    • 叉乘计算多边形面积,注意将方向存于方向数组dic[x][y]中,方便直接调用;
    • 假设走1000000步围成正方形其面积6.25×10^10超int,大数用double精确表示会有精度误差,考虑用long long存储,最后判断奇偶性控制输出;
    • point p1记录上一个点的坐标,point p2用于更新下一个点的坐标,更新一个叉乘一下,最后再/2即可

    参考代码+部分注释

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <map>
    #include <vector>
    #include <queue>
    #include <cstring>
    #include <cmath>
    #include <climits>
    #define eps 1e-8
    using namespace std;
    typedef long long ll;
    const int INF=INT_MAX;
    const int maxn = 110;
    int dic[10][2]={{0,0},{-1,-1},{0,-1},{1,-1},{-1,0},{0,0},{1,0},{-1,1},{0,1},{1,1}};//方向数组,记录每个数字代表的运动方向
    struct point
    {
        int x,y;
    };
    double cross_product(point a,point b){return a.x*b.y-b.x*a.y;}//向量叉乘表示平行四边形面积
    int main()
    {
     //  freopen("input.txt","r",stdin);
       int T;cin>>T;
       while(T--){
         char ch;
         ll ans=0;               //如果是正方形会超int,double会有精度陷阱,故同long long
         point p1,p2;p1.x=p1.y=p2.x=p2.y=0;
         while(cin>>ch&&ch!='5'){
           p2.x+=dic[ch-'0'][0];  //更新p2
           p2.y+=dic[ch-'0'][1];
           ans+=cross_product(p2,p1);//累加
           p1=p2;                //更新p2的同时记录p2
         }
         ans=ans<0?-ans:ans;
         if(ans&1) printf("%lld.5\n",ans/2);//平行四边形面积变三角形面积
         else printf("%lld\n",ans/2);
       }
       return 0;
    }
    
    展开全文
  • =100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。 输入数据中所有的整数都在32位整数范围内,n=0...
  • (三)求三角形面积 (一)判断方向 叉乘的性质如下:  (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...
  • 【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...
  • 1.给出三点(x1, y1) (x2, y2) (x3, y3)求三角形面积,用海伦公式太麻烦,现给出叉乘公式 S = abs(((x2-x1) * (y3-y1) - (x3-x1) * (y2-y1)) / 2),abs为取绝对值 2.给出两点(x1, y1) (x2, y2),求这两点组成得线段...
  • 第一种解法:将三角形化为梯形面积减去两个三角形面积无论三角形的顶点位置如何,△PMN总可以用一个直角梯形(或矩形)和两个直角三角形面积的和差来表示而在直角坐标系中,已知直角梯形和直角三角形的顶点的坐标,...
  • nyoj67——三角形面积

    2017-08-26 21:38:12
    三角形面积 时间限制: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-07-24 20:04:16
    原理:(向量叉乘在高数下册中有提到) 向量叉乘:https://blog.csdn.net/ayicherry/article/details/81328881 代码: LL S(point p1,point p2,point p3) ///point 是坐标结构体 { return abs((p1.x-p3.x)*...
  • 【刷题小记67】三角形面积

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

    2018-07-23 10:16:23
    给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形面积 输入 每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间) 输入0 0 0 0 0 0表示输入...
  • 就是把一个n边形 分割为n-2个三角形 然后相加 ...那么这个三角形面积可以表示为s=(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)/2; 贴上代码 #include #include int main() { double x1,x2,x3,y1,y2,y3,s; in
  • 三角形面积的两种计算方法

    千次阅读 2019-03-01 21:46:03
    公式描述:公式中a,b,c分别为三角形三边长,为半周长,S为三角形面积。(开根号有精度损失) 第二种向量积(叉乘): 向量是一种既有方向、又有大小的量(如一个箭头表示就很形象),在平面直角坐标系中,...
  • 叉乘

    千次阅读 2016-09-23 10:29:49
    |向量a×向量b|=|a||b|sinθ在这里θ表示两向量之间的夹角(共起点的前提下)(0° ≤ θ ≤ 180°),它位于这两个矢量所定义的平面上。 这个定义有一个问题,就是同时有两个单位向量都垂直于积:若满足垂直的条件,...
  • 1011-So Easy[II] 内存限制:64MB时间限制:1000ms特判: No通过数:2提交数:4难度:2 ...且N边形的点是由顺时针顺序给出,求这个N边形的面积。(3<N<100) 输入描述: 输...
  • 画一个图就知道 |a|*|b|*sin c° 是矩形的面积, 因为三角形面积等于 a*b*sin c°/2 如何求相量呢? 设三个点 d1,d2,d3 (结构体) , 则向量t1,t2分别表示为 t1 = (d1.x - d2.x , d1.y - d2.y) ...
  • 来源:牛客网   处女座的签到题 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他...平面上有n个点,问:平面上所有三角形面积第k大的三角形的面积是多少? 输入描述: 第一行T,表示样例的个...
  • [叉乘]USCOJ 1016 多边形面积

    千次阅读 2014-02-10 15:47:30
    传送门:多边形面积 1016: 多边形面积 Description 给出一个多边形的顶点坐标,请计算出这个多边形的面积 (不一定是凸多边形) 。 Input  输入的第一行为一个正整数t ( t 第一行为一个正...
  • 一、题目:三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3,2.5) (6.4,3.1) (5.1,7.2) 求该三角形的面积。 提交小数形式表示浮点数,精确到小数点后三位。 分析思路: 三角形面积求法: 1...
  • 对于任意一个多边形,如果已知其各个顶点的坐标 ,那么这个多边形的面积为: ,其中 。举个例子(From Wikipedia),比如下图这样一个奇奇怪怪的五边形,其顶点坐标为 根据上述公式,只需要把各点坐标带入上述公式即得...
  • 已知三个顶点坐标,若要求三点围成的三角形面积,对计算机而言,我认为这个公式是最方便的:
  • 本文参考自:点击打开链接 利用向量积(叉积)计算三角形面积和多边形的面积 包含详细证明方法
  • 根据百度百科的讲解: ...计算向量P1P3,P1P2的叉乘,也可以计算三角形P1P2P3的面积,得到的结果如果大于0,则表示P2点在线段P1和P3的右侧,此时P2对应的角度小于180。然后依次计算下一个前后所组成向量的叉乘,如...
  • 向量坐标叉乘可以得到三角形面积坐标用矩阵表示出来容易记忆

空空如也

空空如也

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

叉乘表示三角形面积