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

来源:互联网 发布:yeezy抢鞋软件 编辑:程序博客网 时间:2024/05/14 06:19

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

思路:将两条邻边表示成向量的坐标形式,向量相加,然后再减去这两条邻边的交点坐标即可。比如两条邻边为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++)//找出坐标相等的两个点,将标号记入aif(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
原创粉丝点击