风吹飞叶


私信TA

用户名:dotcpp0778580

访问量:289

签 名:

等  级
排  名 2224
经  验 2396
参赛次数 0
文章发表 14
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

核心:边界碰撞之后如何计算——分开算,用两while循环

代码:

from math import *
while True:
    L, W, x, y, r, a, v, s = map(int, input().split())
    if L == W == x == y == r == a == v == s == 0:break
    # 总距离
    d = v * s
    # 新的坐标
    new_x = x + d * cos(radians(a))
    new_y = y + d * sin(radians(a))
    # 边界问题
    while new_x - r < 0 or new_x + r > L:
        if new_x -r < 0: # 左边出界
            a = 180 -a
            new_x = r + (r - new_x)
        elif new_x + r > L: # 右边出界
            a = 180 - a
            new_x = L - r - (new_x - L + r)
    while new_y - r < 0 or new_y + r > W:
        if new_y - r < 0: # 下边出界
            a = -a
            new_y = r + (r - new_y)
        elif new_y + r > W:  # 上边出界
            a = -a
            new_y = W - r - (new_y - W + r)
    print('%.2f %.2f' % (new_x, new_y))


 

0.0分

1 人评分

  评论区

  • «
  • »