Преобразовать упрощенную дискретную область в границы полигона - PullRequest
1 голос
/ 10 февраля 2011

предположим, что у меня есть дискретная карта, на этой карте появляется страна, представленная синим цветом:

country without borders

область страны всегда согласована.

Теперь я хочучтобы извлечь из него границы:

country with borders

Итак:

  • У меня есть список неупорядоченных плиток страны, в данном случае: (3,3), (4,3), (4,4) ...
  • Я хочу извлечь упорядоченную последовательность границ, в данном случае: ((2,2), (3,2)), ((3,2), (4,2)), .... где ((x1, y1), (x2, y2)) означает, что начало границы начинается в (x1, y1) и заканчивается в (x2, y2))

1 Ответ

0 голосов
/ 10 февраля 2011
  1. Сначала найдите самую правильную точку в вашей матрице, независимо от ее высоты. Если вы нашли точки с одинаковым x, выберите произвольно.
  2. Найти все границы этой точки.
  3. Если у вас есть точка, граничащая с сверху, пойти на это, иначе перейти к правильно, еще идти ко дну, еще идти налево, идти в направлении где иметь границу с другим пунктом, всегда в таком порядке. Если встретил точка является начальной точкой, перейдите к Шаг 7, иначе перейдите к следующему шагу.
  4. сохранить две точки (основной точка, встреченная точка) в вашем путь.
  5. Теперь встречаемая точка принципиальная точка.
  6. Перейти к шагу 2
  7. путь содержит то, что вы хотите
...