矩形神码的
1000ms
65536KB
Special Judge
64-bit integer IO format: %lld Java class name: Main
Font Size:
我们都知道,矩形是由两条对角线的,没错吧?(谜之声:这不是显然么!)这两条线的长度也是相等的,没错吧?(谜之声:这不废话么!)然后我们给定一条对角线的起始点和终止点的坐标,然后给定另一个对角线和他的夹角,是不是就能得到两个面积相等的矩形?(谜之声:呃,貌似好像或许应该可能maybe perhaps probably possibly是对的?)
现在我需要你求出这个矩形的面积。
Input
第一行,一个整数T(0<T<=10000),表示数据组数。
接下来T行,每行5个浮点数。分别是x1,y1,x2,y2,theta。表示一条对角线的起始点和终止点的坐标,以及另一条对角线与他的夹角。坐标的绝对值范围均在104以内,夹角范围(0,90]。
Output
对于每一组数据,输出一行,表示面积,精确到小数点后六位。绝对误差或者相对误差在0.0001内均算通过。
Sample Input
2 1.0 1.0 -1.0 -1.0 90.0 3.0 2.0 2.5 9.99 36.00
Sample Output
4.000000 18.835608
Hint
pi请取值acos(-1.0)或者3.1415926535898
Source
Author
51isoft
Tags ( Click to see)
初中知识,囧...我的数学
1 /* 2 刚开始,我居然不知道,矩阵对角线是一样长的,囧.画了一个圆,才知道。 3 刚开始,我居然不知道,c语言里cos()是用弧度的。囧。 4 暴力了数学的差。 5 6 向量的 AB=B-A; 7 第一种方法:向量法。 8 求出中点坐标,然后根据向量求出另一个点。 9 第二种方法:s=1/2*a*b*sinc; 10 11 */ 12 13 //第一种 14 #include<iostream> 15 #include<cstdio> 16 #include<cstring> 17 #include<cstdlib> 18 #include<math.h> 19 using namespace std; 20 21 double pi=acos(-1.0); 22 23 int main() 24 { 25 int t; 26 double x1,y1,x2,y2,theta; 27 double avex,avey,hxl,tom,x3,y3,x4,y4; 28 while(scanf("%d",&t)>0) 29 { 30 while(t--) 31 { 32 scanf("%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&theta); 33 theta=theta/180*pi; 34 avex=(x1+x2)/2; 35 avey=(y1+y2)/2; 36 x4=x2-avex;//向量坐标 37 y4=y2-avey; 38 39 x3=x4*cos(theta)-y4*sin(theta); 40 y3=x4*sin(theta)+y4*cos(theta); 41 x3=x3+avex; 42 y3=y3+avey; 43 44 hxl=sqrt( (x3-x1)*(x3-x1)+(y3-y1)*(y3-y1) ); 45 tom=sqrt( (y3-y2)*(y3-y2)+(x3-x2)*(x3-x2) ); 46 47 printf("%.6lf ",hxl*tom); 48 } 49 } 50 return 0; 51 }