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。表示一条对角线的起始点和终止点的坐标,以及另一条对角线与他的夹角。坐标的绝对值范围均在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\n",hxl*tom);
48         }
49     }
50     return 0;
51 }

 

 

posted @ 2013-10-02 09:27  芷水  阅读(196)  评论(0编辑  收藏  举报