Здравствуйте, DragonFire, Вы писали:
DF>>>Предположим, что у нас есть матрица:
DF>>>0 0 0 0 0 0 0
DF>>>0 1 1 1 1 0 0
DF>>>0 1 0 0 1 1 1
DF>>>0 1 1 1 1 1 1
_DA>>Что-то я ничего не понял. Нужно получить вот это?
_DA>>_DA>>0 0 0 0 0 0 0
_DA>>0|1 1 1 1|0 0
_DA>>0|1|0 0|1 1 1|
_DA>>0|1 1 1 1 1 1|
_DA>>
DF>Ага, примерно такую фигуру =)
Дык вроде всё просто — сначала сканируем по горизонтали: на переходе 01 ставим у единицы "левую стенку", на переходе 10 — ставим у единицы "правую стенку".
Потом аналогично сканируем по вертикали, расставляя единичкам верхние и нижние "стенки".
А потом ещё раз сканируем единички в поисках "углов" (точек, где сходятся стенки). В итоге получим набор вершин искомого многоугольника. Останется их как-то упорядочить.