Здравствуйте, andy1618, Вы писали:
A>Здравствуйте, 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>>Ага, примерно такую фигуру =)
A>Дык вроде всё просто — сначала сканируем по горизонтали: на переходе 01 ставим у единицы "левую стенку", на переходе 10 — ставим у единицы "правую стенку".
A>Потом аналогично сканируем по вертикали, расставляя единичкам верхние и нижние "стенки".
A>А потом ещё раз сканируем единички в поисках "углов" (точек, где сходятся стенки). В итоге получим набор вершин искомого многоугольника. Останется их как-то упорядочить.
Проблемы вызывают "пустоты" — области нулей внутри единиц. Такие области надо как-то обнаруживать и вырезать из искомого многоугольника.
Сами то границы многоугольника найти совсем не сложно, я согласен...