Several days ago, a beast caught a beautiful princess and the princess was put in prison. To rescue the princess, a prince who wanted to marry the princess set out immediately. Yet, the beast set a maze. Only if the prince find out the maze’s exit can he save the princess.
Input
The first line is an integer T(1 <= T <= 100) which is the number of test cases. T test cases follow. Each test case contains two coordinates A(x1,y1) and B(x2,y2), described by four floating-point numbers x1, y1, x2, y2 ( |x1|, |y1|, |x2|, |y2| <= 1000.0).
Output
For each test case, you should output the coordinate of C(x3,y3), the result should be rounded to 2 decimal places in a line.
Sample Input
4
-100.00 0.00 0.00 0.00
0.00 0.00 0.00 100.00
0.00 0.00 100.00 100.00
1.00 0.00 1.866 0.50
Sample Output
(-50.00,86.60)
(-86.60,50.00)
(-36.60,136.60)
(1.00,1.00)
题意:
给定等边三角形两点坐标,求在这两点逆时针方向上的第三点坐标。
这个题有一个公式可以求得第三点坐标 :
点(x1,y1)绕点(x2,y2)逆时针旋转a角度后的新坐标(x,y)
x = (x2-x1)*cos(a)-(y2-y1)*sin(a)+x1;
y = (x2-x1)*sin(a)+(y2-y1)*cos(a)+y1;
注意:此处a为弧度,该题为 π/3。
推断过程有些复杂,有兴趣的可以去百度一下,这里就不再说了^_^
代码如下:
#include <stdio.h> #include <math.h> #define PI 3.1415926 int main() { int t; double l,x1,x2,x3,y1,y2,y3; scanf("%d",&t); while(t--) { scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2); x3 = (x2-x1)*cos(PI/3.0) - (y2-y1)*sin(PI/3.0)+x1; y3 = (x2-x1)*sin(PI/3.0) + (y2 - y1)*cos(PI/3.0)+y1; printf("(%.2lf,%.2lf)\n",x3,y3); } return 0; }