核心:边界碰撞之后如何计算——分开算,用两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 人评分
震宇大神的杀毒软件 (C++代码)浏览:1173 |
高精度加法 (C++代码)(大数加法)浏览:1008 |
Pascal三角 (C语言代码)浏览:1252 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:591 |
本人酷爱递归实现很多问题,这里也是浏览:632 |
WU-输出正反三角形 (C++代码)浏览:1098 |
模拟计算器 (C语言代码)浏览:2366 |
买不到的数目 (C语言代码)浏览:3134 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:522 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:564 |