Advertisement
FriterAAAAAAAA

Untitled

Nov 9th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. bx, by, r = map(int,input().split()) #координаты цистерны
  2. ax, ay = map(int,input().split()) #координаты Шера
  3. cx, cy = map(int,input().split()) #координаты противника
  4. ax, ay, cx, cy = ax-bx, ay-by, cx-bx, cy-by #переносим центр окружностей на (0;0)
  5. R = ((ax-0) ** 2 + (ay-0) ** 2) ** 0.5 #находим радиус большей окружности
  6. h = (R ** 2 - r ** 2) ** 0.5 * 2 #касательная цистерны для проверки возможности стрельбы по врагу через штуку
  7. ac = ((ax-cx) ** 2 + (ay-cy) ** 2) ** 0.5 #хорда через точки игроков
  8. if h <= ac: # теорема: чем большая хорда, тем ближе она к центру. отсюда если касательная будет меньше расстояния игроков, то гг
  9.     print('No way') #скилла не будет(((
  10. else:
  11.     dx, dy = (ax + cx) / 2, (ay + cy) / 2 #середина хорды игроков
  12.     s = (R ** 2 - (ac ** 2) / 4) ** 0.5 #высота от центра окружностей до середины хорды игроков
  13.     k = r/s #вот тут мы остановимся. т.к. вектор а = k * вектор б, то если мы будем умножать координаты центра на k то мы получим точку куда стрельнуть надо. вот. ага.
  14.     print(dx * k + bx,dy * k + by) #возращаем обратно центр окружности
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement