poj 2624 求平行四边形的第四个点坐标

题意:已知平行四边形的两条邻边(给出两条边的四个端点坐标,其中有两个当然是相同的),求第四个点的坐标。

思路:将两条邻边表示成向量的坐标形式,向量相加,然后再减去这两条邻边的交点坐标即可。比如两条邻边为AB和AC。其中A(a,b),B(c,d),C(e,f);那么第四个点D的坐标是A点坐标+向量AD。AD = AB+AC=(c-a+e-a,d-b+f-b).最终D点的坐标为(c+e-a,d+f-a).求解的时候是先把给出的四个坐标相加,再减去A的坐标的3倍。

#include <stdio.h>
struct point{
	double x,y;
}p[5];
int main(){
	//freopen("a.txt","r",stdin);
	while(scanf("%lf %lf",&p[0].x,&p[0].y)!=EOF){
		int i,j,a,flag=1;
		double res1,res2;
		res1 = p[0].x;
		res2 = p[0].y;
		for(i = 1;i<=3;i++){
			scanf("%lf %lf",&p[i].x,&p[i].y);
			res1 += p[i].x;
			res2 += p[i].y;
			for(j = 0;flag&&j<i;j++)//找出坐标相等的两个点,将标号记入a
				if(p[i].x==p[j].x && p[i].y==p[j].y){
					a = i;//a=j也一样
					flag = 0;
				}
		}
		res1 -= 3*p[a].x;
		res2 -= 3*p[a].y;
		printf("%.3lf %.3lf\n",res1,res2);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值