竞赛讨论区 > 小X的多边形
头像
NCU17崔士淼
发布于 2020-03-21 09:06
+ 关注

小X的多边形

思路:

本题是求多边形的面积
核心代码如下:

double PolygonArea(Point *p,int n)
{
    double area=0;
    for(int i=1;i<n-1;i++)
        area+=Cross(p[i]-p[0],p[i+1]-p[0]);

    return area/2;
}

全部代码:

#include <iostream>
#include <cstdio>
#include <cmath>

const int eps=1e-10;
using namespace std;

struct Point{
    double x,y;
    Point(double x=0,double y=0):x(x),y(y){
    }

};

typedef Point Vector;

Vector operator +(Vector A,Vector B)
{
    return Vector(A.x+B.x,A.y+B.y);
}

Vector operator -(Vector A,Vector B)
{
    return Vector(A.x-B.x,A.y-B.y);
}

double Dot(Vector A,Vector B)
{
    return A.x*B.x+A.y*B.y;
 } 

double Cross(Vector A,Vector B)
{
    return A.x*B.y-B.x*A.y;
}

double Length(Vector A)
{
    return sqrt(Dot(A,A));
}

int dcmp(double x)
{
    if(fabs(x)<eps) return 0;
    else 
        return x<0?-1:1;
}

double PolygonArea(Point *p,int n)
{
    double area=0;
    for(int i=1;i<n-1;i++)
        area+=Cross(p[i]-p[0],p[i+1]-p[0]);

    return area/2;
}

int main()
{
    int n;
    cin>>n;
    Point p[6];
    for(int i=0;i<n;i++)
        cin>>p[i].x>>p[i].y;

    cout<<round(PolygonArea(p,n));

    return 0;

}

全部评论

(0) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐