Другие языки программирования и технологии

помогите решить задачу(на любом языке)!!!!

Juri Loch
Juri Loch
100
Доброго времени суток.

Язык здесь совершенно не при чем. Здесь сплошная математика. Для начала нужно проверить, а попадает ли центр дерева между абсциссами и ординатами точек (х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α; (α в радианах) , а центрапльный угол можно найти по теореме косинусов, если рассмотреть треугольник, образованный центром дерева и решениями системы уравнений.

Из расстояния между двумя точкам вычесть длину хорды и добавить к разности длину дуги. Это и будет решением задачи.

Удачи!
Александр Медведев
Александр Медведев
59 613
Лучший ответ
ну вообще то просили наименьшее расстояние а обход по дуге не даст наименьшего
Только что решил сам эту задачу создавая игру, тебе нужно прочитать Волновой метод, или ещё обозночают A*