2013-09-15 4 views
2

Я использую scratch и пытаюсь найти кратчайшее расстояние между двумя точками, а затем нарисую между ними линию.Кривая линия между двумя точками

В основном программа позволяет пользователю щелкнуть по двум точкам на карте, а затем рассчитать долготу и широту для обеих точек. Эта часть в порядке.

Мне нужно нарисовать линию между двумя точками, которая учитывает, что карта плоская, а иногда линия должна покидать экран и возвращаться, чтобы найти кратчайшую линию. Было бы здорово, если бы я мог также получить линию кривой между точками. Есть ли уравнение, которое позволит мне это сделать?

Благодаря

+0

Я помню с помощью алгоритма Брешенема с некоторым успехом: http://en.wikipedia.org/wiki/Bresenham's_line_algorithm – Matt

+0

У вас есть долгота и широта для каждой точки, поэтому у вас есть сферические координаты. Самый короткий путь на сфере находится на круговом круге сферы, который дает вам путь в сферических координатах. Используйте обратную функцию вашей плоскости к долготе/широте, чтобы проследить кривую. –

+2

Ваши точки на расстоянии 1000 миль друг от друга? Если нет, вы, вероятно, могли бы уйти с использованием уравнений плоской земли (так называемое уравновешивающее приближение). Если точки далеко друг от друга, вы можете использовать Haversine. Эта формула находится здесь: http://www.movable-type.co.uk/scripts/latlong.html – TreyA

ответ

1

Рассматривали ли вы с помощью минимального и максимального х и у координаты, чтобы определить, является ли указанная точка находится ближе к стене или к центру. Затем напишите логику, в которой выясняется, будет ли лучше либо сходить с сетки, либо на другую сторону, а затем продолжить до конца. Или просто нарисовать линию между двумя точками. Я бы сделал это за вас, но я думаю, вы были бы признательны за вызов. Что касается рисования линии, используйте невидимый спрайт, который идет к одному, помещает перо вниз и перемещается в другую строку.

Смежные вопросы