欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【计算几何】SSL_1715 计算面积

程序员文章站 2022-04-01 15:50:58
...

题意

给出33个点的坐标,求出这个坐标构成的平行四边形的面积。

思路

利用这33个点组成的平行四边形的面积就为这33个点的叉积的绝对值。
公式:点p1(x1,y1)p1(x1,y1)和点p2(x2,y2)p2(x2,y2)相对原点(0,0)(0,0)的叉积为m=(x1y2)(x2y1)m=(x1*y2)-(x2*y1)

代码

#include<cstdio>

int input() {
	char c = getchar();
	int f = 1, result = 0;
	while (c < '0' || c > '9') {
		if (c == '-') f = -1;
		c = getchar();
	}
	while (c >= '0' && c <= '9') {
		result = result * 10 + c - 48;
		c = getchar();
	}
	return result * f;
}

int main() {
	int t = input();
	int x[4], y[4];
	for (int i = 1; i <= t; i++) {
		x[1] = input(); y[1] = input();
		x[2] = input() - x[1]; y[2] = input() - y[1];
		x[3] = input() - x[1]; y[3] = input() - y[1];//相对于(x1,y1)
		int ans = (y[2] * x[3]) - (x[2] * y[3]);
		if (ans < 0) ans *= -1;
		if (!ans) printf("Error\n");
		else printf("%d.0\n", ans);
	}
}
相关标签: 计算几何