Доброго времени суток.
Язык здесь совершенно не при чем. Здесь сплошная математика. Для начала нужно проверить, а попадает ли центр дерева между абсциссами и ординатами точек (х1,у1) и (х2,у2). Т. е. оно вообще может помешать? Если нет, то решением будет расстояние между двумя заданными точкам. Далее не помешает проверить не лежит ли центр дерева на прямой, соединяющей две точки. Если да, то решением будет расстояние между точкам минус диаметр дерева и плюс половина длины окружности дерева. Если же центр дерева не на пути, то надо решить систему двух уравнений.
(x - xT)^2 + (y - yT)^2 = RT^2
y - y1 = k* (x - x1)
где k = (y2 - y1) / (x2 - x1)
Если корней нет или корни совпадают, то решением будет, опять-таки, расстояние между точками 1 и 2. А вот если корни есть и они различны, то тогда нужно по координатам центра дерева и корням системы найти центральный угол дуги. Далее по этому углу и длине хорды найти длину дуги.
Длина дуги L радиуса R с центральным углом α, вычисляется по формуле L = Rα; (α в радианах) , а центрапльный угол можно найти по теореме косинусов, если рассмотреть треугольник, образованный центром дерева и решениями системы уравнений.
Из расстояния между двумя точкам вычесть длину хорды и добавить к разности длину дуги. Это и будет решением задачи.
Удачи!
Другие языки программирования и технологии
помогите решить задачу(на любом языке)!!!!
ну вообще то просили наименьшее расстояние а обход по дуге не даст наименьшего
Только что решил сам эту задачу создавая игру, тебе нужно прочитать Волновой метод, или ещё обозночают A*
Похожие вопросы
- Помогите решить задачу по программированию! Язык - Visual Basic.
- помогите решить задачу пожалуйста на языке C++
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- Помогите решить задачу на Турбо паскале
- Помогите решить задачу.
- Помогите решить задачу на языке c++. Не понимаю условия в конце кода.
- Помогите!!! решить задачу тремя способами (три вида цикла) или можно хотя бы одним любым
- Помогите решить задачу на программирование!
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((
- Помогите решить задачу на Basic