полигон — Нахождение верхней левой и нижней правой точек (C ++)

Я ищу помощь в проекте, над которым я работаю.

То, что я делаю, это алгоритм приближения полигонов. У меня есть все точки моей границы, но чтобы запустить алгоритм, мне нужно найти верхнюю левую и нижнюю правую точки из набора точек. Все точки хранятся в структурном массиве, который имеет координаты x и y каждой точки. Любые идеи о простом способе перебрать массив точек?

Любая помощь будет принята с благодарностью. Если вам нужна дополнительная информация, просто спросите, и я предоставлю все, что смогу.

1

Решение

Исходя из вашего комментария, нижний левый min(x+y) и справа вверху max(x+y)

Верхний левый: min(x+max(y)-y)

Нижний правый: max(max(x)-x+y)

Где внутренний max постоянная

Хотя это не всегда может дать результат, который согласуется с вашими глазами.

Альтернативные метрики могут быть построены на основе расстояния от углов ограничительной рамки вашего объекта или квадрата расстояния и т. Д.

Другой метод заключается в том, чтобы перевести многоугольник вокруг начала координат, а затем в верхнем левом углу находится точка, наиболее удаленная от начала координат, но в верхнем левом квадранте … Это дает целую кучу вариантов расположения. (0,0) может быть средним из всех, может быть средневзвешенным на основе некоторого правила и т. д. Много различий в том, как вы выбираете это, каждый может дать результаты, которые отличаются для очень небольшого числа, если полигоны от того, что выберет глаз.

Наконец, вы всегда можете обучить нейронную сеть, чтобы выбрать ответ …. Это может привести к чему-то, что (вставьте пределы доверия от обучения)% вероятности дать ответ, с которым вы согласны … Но вы и я можем не согласиться

2

Другие решения

Слева вверху: min (x + max (y) -y)

Справа внизу: мин (макс (х) -х + у)

Где внутренний максимум является константой.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector