POJ 3907 Build Your Home | 计算多边形面积

给个多边形

计算面积

输出要四舍五入



直接用向量叉乘就好

四舍五入可以+0.5向下取整

#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 10005
#define eps 1e-8
using namespace std;
struct point
{
    double x,y;
    inline double operator *(const point &rhs) const
	{
	    return x*rhs.y-y*rhs.x;
	}
}po[N];
int n;
double S;
double abs(double x)
{
    return x>0?x:-x;
}
double calc()
{
    double ret=0;
    for (int i=1;i<=n;i++)
	ret+=po[i]*po[i+1];
    return abs(ret/2)+0.5;
}
int main()
{
    while (scanf("%d",&n)!=EOF && n)
    {
	for (int i=1;i<=n;i++)
	    scanf("%lf%lf",&po[i].x,&po[i].y);
	po[n+1]=po[1];
	printf("%d\n",(int)calc());
    }
    return 0;
}
时间: 2024-07-29 17:09:07

POJ 3907 Build Your Home | 计算多边形面积的相关文章

poj 3907 Build Your Home 多边形面积

题意: 给一个多边形,求它的面积. 分析: 算一遍叉积即可. 代码: //poj 3907 //sep9 #include <iostream> #include <cmath> using namespace std; int main() { float x0,y0,x1,y1; short n; while(scanf("%hd",&n)==1&&n){ float sum=0; scanf("%f%f",&am

POJ 3907 Build Your Home

传送门的连接地址 题目大意:给你一个数n ,然后给出n个坐标值(二维),让你求面积: 解题思路:求叉积,注意最后取绝对值,而且还要除以2啊... 上代码: #include <iostream> #include <cstdio> #include <cmath> using namespace std; const int maxn=1e4+5; struct Point { double x; double y; }data[maxn]; double chaji(

C# GMap.Net 计算多边形面积

Cédric Bignon  : Let's note Points the points of the polygon (where Points[0] == Points[Points.Count - 1] to close the polygon). The idea behind the next methods is to split the polygon into triangles (the area is the sum of all triangle areas). But,

HDU2036 计算多边形的面积

计算多边形面积就是通过拆分三角形的方法,即为选取任意一个点,从该点出发,连接多边形的每一个顶点,这样就将多边形分为了许多个三角形.计算每一个三角形的面积即可,用叉积计算的每一个三角形的面积为"有向面积",直接将所有三角形的有向面积相加,结果的绝对值就是多边形的面积. #define _CRT_SECURE_NO_DEPRECATE #include<iostream> #include<cmath> const double EPS = 1e-8; const

地球椭球面上多边形面积量算(C++代码)

昨天突然测试的时候发现以前产品中写的地球椭球面上面积计算的代码有点问题,于是今天就彻底修正,从QGIS中抠出代码来用C++重写了一下,新代码可以比较准确计算椭球面上多边形的面积,这个基础函数对空间量算功能中的面积量测非常重要,在这里共享出来供大家参考甚至直接拿过去用. 头文件如下: /** * @file DistanceArea.h * @brief 椭球面上计算多边形面积的接口文件 * @details * @author zxg * @date 2015年5月15日 * @version

多边形面积的求法

学了高数的同学,会学到向量的外积,也可知道它有一个用途,可以求三角面积. •外积的几何意义:α和β所张成的平行四边形的有向面积 •由求三角形面积的方法可以推广求凸多边形面积,如图,从一固定点出发,向其他各点引辅助线,这样就分割成了若干个三角形,利用上式求出每个三角形的面积再相加即可. 代码实现: 不过这种方法有局限性,只能求凸多边形的面积,对于凹多边形似乎就不可以了. 这里再提供一种凸凹都合适的求法,不过我也不太懂,如果哪位大神看到了,就不吝赐教一下,现在这里谢过了. •double Area(

凸包,多边形面积,线段在多边形内的判定。

zoj3570  Lott's Seal http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4569 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<algorithm> 5 using namespace std; 6 const double eps=1e-8; 7 const int M=10001

多边形面积

多边形面积 多边形通常分为凸多边形和凹多边形 计算多边形面积有几种好用的算法 其核心思想都是把一个n(n>=3)边形转化为n-2个三角形,然后计算 一:海伦公式 最常见的多边形面积计算公式 此公式表达式为: S= sqrt( p*(p-a)*(p-b)*(p-c)) 其中p为此三角形的半周长,而a,b,c为三角形三边长 若三角形三点为x1,y1,x2,y2,x3,y3, 即p=(a+b+c)/2 a=sqrt((x2-x1)2+(y2-y1)2) b=sqrt((x3-x2)2+(y3-y2)2

poj 1654 Area(求多边形面积)

题意:从原点出发向八个方向走,所给数字串每个数字代表一个方向,终点与原点连线,求所得多边形面积: 思路:(性质)共起点的两向量叉积的一半为两向量围成三角形的面积.以此计算每条边首尾两个向量的叉积,求和,除二: #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const dou