На карамбольном столе (биллиардный стол без луз) длиной $$$ l $$$ и шириной $$$ w $$$ расположены два биллиардных шара. Шары расположены в точках $$$(x_1, y_1)$$$ и $$$(x_2, y_2)$$$, где $$$ 1 \leq x_i \lt l, 1 \leq y_i \lt w $$$, а оси координат идут вдоль бортов стола (ось абсцисс – вдоль «длинного» борта, ось ординат – вдоль «широкого»). Необходимо попасть первым шаром во второй, сделав ровно три борта.
Для простоты будем считать, что шары – это точки, а угол отражения шара не зависит от силы удара и равен углу попадания в борт. При попадании шара точно в угол он отражается строго в обратном направлении, и считается, что он попал в оба борта, образующих угол. Попаданием считается точное совпадение координат точек.
Напишите программу, которая рассчитает удар первым шаром, который, отразившись от борта три раза, попадет во второй, и преодолев при этом минимальное расстояние.
В первой строке записаны два целых числа $$$ l $$$ и $$$ w $$$ ($$$ 2 \leq l, w \leq 1000 $$$), разделенные пробелом.
Вторая строка содержит четыре целых числа: $$$ x_1, y_1, x_2, y_2 $$$, разделенные пробелами – позиции первого и второго шара соответственно ($$$ 1 \leq x_i \lt l, 1 \leq y_i \lt w $$$).
Выведите единственное число с точностью $$$ 10^{-6} $$$ – длину траектории оптимального удара.
16 3 1 1 7 1
10.00000000
Оптимальная траектория удара для данных из примера:
(1, 1) $$$\rightarrow$$$ (0, $$$\frac{1}{4}$$$) $$$\rightarrow$$$ ($$$\frac{1}{3}$$$, 0) $$$\rightarrow$$$ ($$$4\frac{1}{3}$$$, 3) $$$\rightarrow$$$ (7, 1)
Картинка:
