Повернутые 2d прямоугольник пересекающиеся точки или области - PullRequest
3 голосов
/ 16 августа 2010

Переход от к предыдущему вопросу . У меня есть два прямоугольника, и они выглядят так:

struct Rect
{
 NSPoint topLeft; 
 NSPoint topRight; 
 NSPoint bottomLeft; 
 NSPoint bottomRight; 
}

Я использую что-то похожее код , чтобы проверить, пересекаются ли прямоугольники(или столкновение).В случае, если 2 прямоугольника пересекаются, я хочу вычислить площадь пересечения в первом прямоугольнике или точки, где второй прямоугольник пересекается с первым прямоугольником (то есть координаты пересечения).

Как рассчитать точки пересечения или площадь пересечения.

Ответы [ 2 ]

2 голосов
/ 16 августа 2010

То, что вы спрашиваете, похоже, является частным случаем "пересечения многоугольников". (поскольку прямоугольники являются полигонами).

Вот библиотека, которая делает это:

http://www.cs.man.ac.uk/aig/staff/alan/software/

Может быть, это может помочь (они как-то говорят об алгоритме). Однако, если вам нужно только пересечение прямоугольника, его, вероятно, можно упростить.

Также, возможно, вы могли бы взглянуть на этот ТАК вопрос:

Алгоритм обнаружения пересечения двух прямоугольников?

2 голосов
/ 16 августа 2010

Точки пересечения можно определить следующим образом:

foreach line in rectangle 1: line1
  foreach line in rectangle 2: line2
    find point of intersection for line1, line2

, чтобы найти точку пересечения двух линий:

http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/

Вы можете найтиобласть пересечения путем нахождения точек пересечения и разделения линий на основе этого для создания новых сторон / удаления сторон.Вы можете получить до 8 баллов в полученном многоугольнике или всего 3 (не считая вырожденных случаев).

Нет, я не говорил, что это самый эффективный метод, но он будет работать :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...