Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как определить пересекаются ли два повернутых контрола или нет?


estra

Вопрос

Вопрос в продолжении темы Как определить пересекаются ли два контрола или нет (так как та тема уже закрыта). Рекомендуемая функция IntersectsWith не учитывает, что прямоугольник может быть повернут на какой либо угол, в связи с чем результат может отличаться от ожидаемого.

 

6596879.png

 

Имеется ли в FM метод, корректно обрабатывающий проиллюстрированный выше случай?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Тут есть варианты определения пересечения

 

1. Проверить, что хотя бы одна из вершин контрола находится в области расположения другого. 

Для этого нужно:

  1. Получить абсолютные координаты вершин контрола
  2. И проверить попадание каждой вершины в область другого контрола TControl.PointInObject.

Если хотя бы одна вершина будет в области другого, значит контролы пересекаются.

 

2. Воспользоваться известными алгоритмами поиска пересечения двух выпуклых многоугольников

Например: "Пересечение: Два выпуклых многоугольника"

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...