Как я могу найти точки пикселей внутри четырехугольника, используя Java? - PullRequest
3 голосов
/ 08 февраля 2011

Я делаю некоторую обработку изображения, и у меня есть координаты четырех точек четырехугольника.(что-то вроде трапеции) Как я могу получить координаты всех пикселей внутри него?Я использую Java, кстати.Спасибо!

Ответы [ 3 ]

1 голос
/ 08 февраля 2011

Вам нужно заполнить многоугольником отсканированной строки.

Вот небольшая лекция в формате PDF на эту тему:

http://www.cs.binghamton.edu/~reckert/460/lect11_2009-areafill-transformations.pdf

Вот пример веб-страницы с примером кода C иХорошая иллюстрация основной идеи:

http://alienryderflex.com/polygon_fill/

Вот краткая форма.Разделите свои четырехугольные линии на те, что слева и справа.Для каждой строки постоянной Y-координаты определите точку пересечения для левой линии;определить точку пересечения для правой линии;все пиксели в этом ряду между двумя точками пересечения находятся внутри трапеции.

Просто в истории, такого рода вещи изначально (и, вероятно, все еще) были сделаны для рендеринга трехмерных сцен в программном обеспечении.Я думаю, что тогда у него было другое имя, но я не могу вспомнить это.Однако на самом деле вам не нужно рисовать пиксели;алгоритм выдаст вам пиксели независимо от того, рисуете вы их или нет.

0 голосов
/ 08 февраля 2011

Это вопрос обнаружения столкновения?Хотите знать, находится ли заданная точка внутри фигуры?Или вам действительно нужны координаты всех точек внутри вашей фигуры?

0 голосов
/ 08 февраля 2011

http://wiki.processing.org/w/Find_which_side_of_a_line_a_point_is_on имеет псевдокод о том, как определить, на какой стороне линии находится точка.

Если ваш квад определяется точками, это A, B, C, D - проверка,точка находится с левой стороны от AB, BC, CD и DA должны дать вам ответ.

Редактировать: К сожалению, я прочитал ваш вопрос как нахождение a пункта, а не всех,Надеюсь, что это все еще полезно.

...