• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

暑假训练 台球碰撞(计算几何)

开发技术 开发技术 6天前 7次浏览

题目链接内网可进

题意:

给出你个圆让他在一个矩阵中运动,求s秒后圆心最后位置:
给出你矩阵大小(l,w)给你圆心坐标(x,y)给出你圆半径(r),给出你运动速度,夹角,和运动时间(v,a,s)

思路:

我们通过把运动分解,分解成x轴方向和y轴方向的运动.
首先我们想到圆有半径,那么半径碰到边框即会碰撞,所以我们可以直接看圆心的运动.并且我们上面说了分解,所以我们也把速度分解了.

当距离大于我们后来圆心的边框,我们就可以模拟成两个边框叠加,进入另一个边框,然后对称过来即可.

 while(cin>>l>>w>>x>>y>>r>>a>>v>>s){
        if(l==0&&w==0) return 0;
        l-=r;w-=r;
        a=a*1.0/180*acos(-1.0);

        double fx,fy;
        fx=v*cos(a)*s+x;
        fy=v*sin(a)*s+y;
        while(fx<r||fx>l){
            if(fx<r) fx = r*2-fx;
            if(fx>l) fx = l*2-fx;
        }
        while(fy<r||fy>w){
            if(fy<r) fy =r*2-fy;
            if(fy>w) fy =w*2-fy;
        }

        printf("%.2lf %.2lfn",fx,fy);
    }

程序员灯塔
转载请注明原文链接:暑假训练 台球碰撞(计算几何)
喜欢 (0)