bnu 10805 矩形神码的 平面向量的运行

矩形神码的

1000ms
65536KB
Special Judge
 
64-bit integer IO format:   %lld       Java class name:   Main
Font Size:    
Type:    
我们都知道,矩形是由两条对角线的,没错吧?(谜之声:这不是显然么!)这两条线的长度也是相等的,没错吧?(谜之声:这不废话么!)然后我们给定一条对角线的起始点和终止点的坐标,然后给定另一个对角线和他的夹角,是不是就能得到两个面积相等的矩形?(谜之声:呃,貌似好像或许应该可能maybe perhaps probably possibly是对的?)
现在我需要你求出这个矩形的面积。

Input

第一行,一个整数T(0<T<=10000),表示数据组数。
接下来T行,每行5个浮点数。分别是x1,y1,x2,y2,theta。表示一条对角线的起始点和终止点的坐标,以及另一条对角线与他的夹角。坐标的绝对值范围均在10 4以内,夹角范围(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\n",hxl*tom);

48         }

49     }

50     return 0;

51 }

 

 

你可能感兴趣的:(运行)