UVA - 10250 The Other Two Tree
2014-12-18 21:14
393 查看
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19096
这题做的很艰难,真有点高中白读了的感觉,一些基本东西快忘完了都!
给定一块对边相等的土地,然后每条边的每个方向都有一快邻居的土地与你共用一条边,邻居土地都是正方形,给定对边邻居土地的中心点,求另两块土地的中心点。
抽象出来,就是给定正方形的一对对立顶点,求另外一对顶点。
证明四个中心点是正方形是利用全等三角形,边角边证明。
之后用向量的方法,把其余顶点求出来。假设已知点为 A(x1,y1) C(x2,y2) 则向量 P=AC=(px,py)=(x2-x1,y2-y1); 因为BD与AC垂直且
中点坐标为C=(cx,cy)=( (x1+x2)/2, (y1+y2)/2 ) 得出两点坐标一个是 C+ (py,-px) /2 一个是 C - (py,px)/2 .知道中点和BD的向量就可以求出BD的坐标,点按向量平移。
这题做的很艰难,真有点高中白读了的感觉,一些基本东西快忘完了都!
给定一块对边相等的土地,然后每条边的每个方向都有一快邻居的土地与你共用一条边,邻居土地都是正方形,给定对边邻居土地的中心点,求另两块土地的中心点。
抽象出来,就是给定正方形的一对对立顶点,求另外一对顶点。
证明四个中心点是正方形是利用全等三角形,边角边证明。
之后用向量的方法,把其余顶点求出来。假设已知点为 A(x1,y1) C(x2,y2) 则向量 P=AC=(px,py)=(x2-x1,y2-y1); 因为BD与AC垂直且
中点坐标为C=(cx,cy)=( (x1+x2)/2, (y1+y2)/2 ) 得出两点坐标一个是 C+ (py,-px) /2 一个是 C - (py,px)/2 .知道中点和BD的向量就可以求出BD的坐标,点按向量平移。
#include<cstdio> #include<cmath> #define eps 1e-8 int main() { double x1,y1,x2,y2; while(~scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)) { if(fabs(x1-x2)<eps&&fabs(y1-y2)<eps) //不能构成正方形 { printf("Impossible.\n"); continue; } double px=(x1-x2)/2,py=(y1-y2)/2; double cx=(x1+x2)/2,cy=(y1+y2)/2; printf("%.10lf %.10lf %.10lf %.10lf\n",cx+py,cy-px,cx-py,cy+px); } return 0; }
相关文章推荐
- 新手UVa 10250 The Other Two Tree && 10050 Hartals
- uva 10250 - The Other Two Trees
- UVa 10250 The Other Two Trees
- UVa 10250 - The Other Two Trees
- uva 10250 - The Other Two Trees
- UVa10250 – The Other Two Trees
- UVA 10250 题目 The Other Two Trees (计算几何)
- uva10250 The Other Two Trees
- UVa 10250 The Other Two Trees
- UVa 10250 The Other Two Trees
- UVA10250-The Other Two Trees
- UVA - 10250 The Other Two Trees
- UVa 10250 The Other Two Trees(数学问题)
- uva 10250 The Other Two Trees(矩形三角形坐标计算)
- uva 10250 - The Other Two Trees
- uva-10250-The Other Two Trees
- Uva 10250 - The Other Two Trees
- UVa 10250 - The Other Two Trees
- UVA 10250 The Other Two Trees
- uva 10250 - The Other Two Trees