题目:二维坐标系中给出三个点A B C,问是否存在一个旋转中心点D,使ABC同时绕D旋转后,能使A到达原来的B点,B到达原来的C点。
题解:只需AB线段长度=BC。
证明:若ABC共线,不存在D点,无解。
若不共线,则ABC共圆,此时只可能绕圆心旋转,否则点会转出此圆,不可能满足题意。转过一个角度,若能使A到达原来的B点,B到达原来的C点,那么A,B两点与圆心连线转过圆心角相等,那么弧长AB=BC,那么必有弦长AB=BC。证毕。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long ax, ay, bx, by, cx, cy;
cin >> ax >> ay >> bx >> by >> cx >> cy;
if ((ax - bx)*(by - cy) == (ay - by)*(bx - cx))cout << "No";
else if ((ax - bx)*(ax - bx) + (ay - by)*(ay - by) == (bx - cx)*(bx - cx) + (by - cy)*(by - cy))cout << "Yes";
else cout << "No";
}