题意:—已知平行四边形的两条邻边(给出两条边的四个端点坐标,其中有两个当然是相同的),求第四个点的坐标。
思路:将两条邻边表示成向量的坐标形式,向量相加,然后再减去这两条邻边的交点坐标即可。比如两条邻边为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;
}