Description
动点初始时刻在圆的三点钟方向(即与x轴正方向平行),并以逆时针方向绕圆转。
Input
先输入一个整数T,表示T(T<50)组数据。
每组数据一行七个实数a,b,r(r>0),x,y,w(w>=0),t(t>=0) 分别表示圆的圆心坐标(a,b),半径r,固定点坐标(x,y),角速度w,要查询的时刻t。
上述所有数据的绝对值小于10000。
Output
输出答案占一行,保留2位小数。
Sample Input
1 1 1 3 1 3 0
Sample Output
Hint
角速度定义:
一个以弧度为单位的圆(一个圆周为2π,即:360度=2π),在单位时间内所走的弧度即为角速度。
分析:纯粹数学问题,利用曼哈顿距离(老司机距离),勾股定理,三角函数即可解决。ps:复制我的代码会格式错误!!!问题自己找(其实我也找不出来)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x,i;
double xa,ya,w,t,xb,yb,d,ans,a,b,r;
cin>>x;
for(i=1;i<=x;++i)
{
cin>>a>>b>>r;
cin>>xa>>ya;
cin>>w>>t;
xb=a+r*cos(w*t);
yb=b+r*sin(w*t);
d=abs((b-ya)*(xa-xb)-(ya-yb)*(a-xa))/(sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb)));
ans=2*(sqrt(r*r-d*d));
printf("%.2f",ans);
}
}