LIGHT OJ-1305 - Area of a Parallelogram 【向量叉积】

本篇博客介绍了一种算法题目,该题目要求根据已知的三个顶点坐标来确定平行四边形第四个顶点的坐标,并计算平行四边形的面积。文章提供了完整的AC代码实现,使用向量的叉积来计算面积。

1305 - Area of a Parallelogram

Time Limit: 1 second(s)Memory Limit: 32 MB

A parallelogram is a quadrilateral with two pairs of parallel sides. See the picture below:

Fig: a parallelogram

Now you are given the co ordinates of A, B and C, you have to find the coordinates of D and the area of the parallelogram. The orientation of ABCD should be same as in the picture.

Input

Input starts with an integer T (≤ 1000), denoting the number of test cases.

Each case starts with a line containing six integers Ax, Ay, Bx, By, Cx, Cy where (Ax, Ay) denotes the coordinate of A(Bx, By) denotes the coordinate of B and (Cx, Cy) denotes the coordinate of C. Value of any coordinate lies in the range [-1000, 1000]. And you can assume that A, B and C will not be collinear.

Output

For each case, print the case number and three integers where the first two should be the coordinate of D and the third one should be the area of the parallelogram.

Sample Input

Output for Sample Input

3

0 0 10 0 10 10

0 0 10 0 10 -20

-12 -10 21 21 1 40

Case 1: 0 10 100

Case 2: 0 -20 200

Case 3: -32 9 1247

 

题意:给出平行四边形的三个顶点坐标,求另一个定点的坐标和平行四边形的面积;

思路:顶点根据中点坐标求,面积求的话我是用向量旳叉积算的 ,做完后同学说他用给出的三个点的坐标算出角计算的面积;

失误:比赛时想了好长时间,想计算角度的,但是面积一定是int,计算角度后还要转化而且当时思路比较乱想的是算出两个角之后得出夹角,没有考虑到用余弦定理算角,当误了很长的时间,最后还是想到了向量叉积的定义,才计算出来;


AC代码:

#include<cstdio>

int main()
{
	int T,xa,xb,xc,xd,ya,yb,yc,yd,S,Kase=0;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d %d %d %d %d %d",&xa,&ya,&xb,&yb,&xc,&yc);
		xd=xa+xc-xb; 
		yd=ya+yc-yb;
		S=(xb-xa)*(yc-ya)-(xc-xa)*(yb-ya);
		if(S<0) S=-S;
		printf("Case %d: %d %d %d\n",++Kase,xd,yd,S);
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值