题意:
给你平面上的两个点A,B,求点C使得A,B,C逆时针成等边三角形。
思路:
http://www.cnblogs.com/E-star/archive/2013/06/11/3131563.html 向量的旋转。
直接套公式就行,或者我们可以找到等式解一个二元一次方程然后向量判断方向即可。我比较懒,就写了向量旋转的。
#include <iostream> #include <cstdio> #include <cmath> #include <vector> #include <cstring> #include <algorithm> #include <string> #include <set> #include <functional> #include <numeric> #include <sstream> #include <stack> #include <map> #include <queue> #define CL(arr, val) memset(arr, val, sizeof(arr)) #define lc l,m,rt<<1 #define rc m + 1,r,rt<<1|1 #define pi acos(-1.0) #define ll __int64 #define L(x) (x) << 1 #define R(x) (x) << 1 | 1 #define MID(l, r) (l + r) >> 1 #define Min(x, y) (x) < (y) ? (x) : (y) #define Max(x, y) (x) < (y) ? (y) : (x) #define E(x) (1 << (x)) #define iabs(x) (x) < 0 ? -(x) : (x) #define OUT(x) printf("%I64d\n", x) #define lowbit(x) (x)&(-x) #define Read() freopen("din.txt", "r", stdin) #define Write() freopen("dout.txt", "w", stdout); #define M 137 #define N 22 using namespace std; const int inf = 0x7f7f7f7f; const int mod = 1000000007; double xx1,yy1,xx2,yy2; int main() { // Read(); int T; scanf("%d",&T); while (T--) { scanf("%lf%lf%lf%lf",&xx1,&yy1,&xx2,&yy2); // printf("%.3lf %.3lf %.3lf %.3lf\n",xx1,yy1,xx2,yy2); double tx = xx2 - xx1; double ty = yy2 - yy1; double x = tx*(1.0/2.0) - ty*(sqrt(3.0)/2.0) + xx1; double y = ty*(1.0/2.0) + tx*(sqrt(3.0)/2.0) + yy1; printf("(%.2lf,%.2lf)\n",x,y); } return 0; }