(p1, v1, p2, v2)
| 71 | |
| 72 | |
| 73 | def get_collision(p1, v1, p2, v2): |
| 74 | A = np.stack([v1, -v2], 1) |
| 75 | b = p2 - p1 |
| 76 | |
| 77 | if abs(np.linalg.det(A)) < 1e-3: |
| 78 | return False, None |
| 79 | |
| 80 | x = np.linalg.solve(A, b) |
| 81 | collides = all(x >= 0) and all(x <= 1) # how many seconds until collision |
| 82 | |
| 83 | return collides, p1 + x[0] * v1 |
| 84 | |
| 85 | |
| 86 | def check_episode_has_noise(lat_noise_percent, long_noise_percent): |