Коротка пояснення проблеми
Напишіть програму, щоб знайти мінімальну відстань між двома точками, які проїжджають лише на променях, що виходять від початку і кругами, орієнтованими на початок.
Пояснення Приміщення
Тепер давайте уявимо, що ми в літаку, і в цьому літаку нам дозволяється лише подорожувати спеціальними шляхами. Нам дозволяється подорожувати будь-яким променем, що випливає з походження.
Ми також можемо подорожувати будь-яким колом, зосередженим у колі
Тепер наша мета - подорожувати з однієї точки на цій площині в іншу. Однак ми не можемо просто подорожувати простою евклідовою стежкою, ми можемо це зробити, лише якщо точки трапляються на промінь, що виходить від центру.
Ми можемо подорожувати цим, тому що він падає на один із наших променів.
Ми також можемо подорожувати по колах, орієнтованих на походження.
Приклади
Тепер ось завдання:
Ми повинні дістатися від однієї точки до іншої за найкоротший шлях; часто це поєднання подорожей по колах і променях.
Це, однак, також може подорожувати двома променями.
Іноді існують два шляхи, які проїжджають мінімальну відстань.
Проблема
Ваше завдання полягає в тому, щоб написати програму, яка, даючи два бали, дасть нам мінімальну відстань між ними, якщо ми будемо слідувати цим правилам. Входи можуть бути задані у прямокутній або полярній формі, а вихід повинен бути одним числом, відстань між ними.
Випробування
(з прямокутним входом)
(1,1) (1,-1) -> ~ 2.22144
(0,0) (1, 1) -> ~ 1.41421
(1,0) (-0.4161 , 0.90929) -> ~ 2
(1,1) (1, 0) -> ~ 1.19961
(1,2) (3, 4) -> ~ 3.16609