转啊转

Description


    在二维平面上,有一个固定的圆和一个固定的点(保证该点不在圆上),还有一个动点在圆上以角速度w绕圆心一直转。在t时刻,连接该动点与定点成一条直线k,求直线k被圆所截线段的长度(即直线k在圆内部分长度)。

         动点初始时刻在圆的三点钟方向(即与x轴正方向平行),并以逆时针方向绕圆转。

  



Input


       先输入一个整数T,表示TT<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 1 3 1 3 0

Sample Output


2.00

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);      
    }  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值