侧边栏壁纸
博主头像
微尘 博主等级

行动起来,活在当下

  • 累计撰写 132 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

封闭多边形的面积(笛卡尔坐标系中)

Administrator
2023-03-16 / 0 评论 / 0 点赞 / 8 阅读 / 0 字

介绍

适用于笛卡尔坐标系,就是普通的x轴、y轴上。

注意,多边形是以最后一个顶点到第一个顶点连接起来封闭的所以要有x[n]=x[0], y[n]=y[0]
而且最后有可能是负数,取个绝对值。
公式如下。
封闭多边形面积1.png
化简后
封闭多边形面积2.png

题目

题目描述

给出一个没有缺口的简单多边形,它的边是垂直或者水平的,要求计算多边形的面积。

多边形被放置在一个 $x-y$ 的笛卡尔平面上,它所有的边都平行于两条坐标轴之一。然后按逆时针方向给出各顶点的坐标值。所有的坐标值都是整数,因此多边形的面积也为整数。

输入格式

第一行给出多边形的顶点数 n

接下来 n 行,每行给出多边形一个顶点的坐标值 xy,用空格隔开。

顶点按逆时针方向逐个给出。多边形最后是靠从最后一个顶点到第一个顶点画一条边来封闭的。

输出格式

一行,一个整数,表示多边形的面积。

样例 #1

样例输入 #1

10
0 0
4 0
4 1
3 1
3 3
2 3
2 2
1 2
1 3
0 3

样例输出 #1

9

提示

对于 $100\%$ 的数据,$1 \le n \le 100$$-200 \le x,y \le 200$

代码

void solve()
{
	int n;
	cin >> n;

	for (int i = 0; i < n; i ++ )
	{
		cin >> x[i] >> y[i];
	}

	LL res = 0;
	x[n] = x[0], y[n] = y[0];
	for (int i = 0; i < n; i ++ )
	{
		res += x[i] * y[i + 1] - y[i] * x[i + 1];
	}

	cout << abs(res) / 2 << endl;
}
0

评论区