Нахождение фигуры, созданной двумя другими пересекающимися фигурами

У меня есть две перекрывающиеся фигуры в моем приложении С#, определенные массивами Point. Мне нужно найти точки, которые определяют форму, где эти два перекрываются. На этом изображении я знаю красную и зеленую точки, но мне нужны желтые точки.

альтернативный текст

Вот некоторый фиктивный код, который может помочь:

Point[] GetIntersection(Point[] red, Point[] green)
{
    Point[] yellow = ?!?;

    return yellow;
}

Конечно, есть способы, которыми вы могли бы сделать это, предполагая хорошие простые прямоугольники. На практике мне нужно уметь обрабатывать многоугольники и, может быть, даже круги (хотя я могу жить и без кругов).

Любые идеи? Я надеюсь, что есть отличная функция GDI+, которая просто выплюнет это.


person Jon B    schedule 18.10.2010    source источник


Ответы (1)


Похоже, что метод Region::Intersect делает то, что вы хотите.

person D'Arcy Rittich    schedule 18.10.2010
comment
@Miky - я пробовал это с многоугольником, и он работал нормально (вы должны создать GraphicsPath из массива точек многоугольника). - person Jon B; 18.10.2010