Нарисуйте контур комбинированных прямоугольников на холсте - PullRequest
2 голосов
/ 26 февраля 2012

Есть ли хороший алгоритмический способ объединить несколько квадратов (каждый имеет четыре точки x / y), чтобы нарисовать контур соединенного фигуры на холсте?

Цифры, которые я хотел бы убедиться, работают следующим образом:

  • два квадрата соединены в прямоугольник
  • четыре квадрата соединились, чтобы сделать квадрат большего размера
  • два квадрата, которые имеют диагональ, как прямоугольник с треугольниками на каждом конце под 45 градусов - это, вероятно, самый нерегулярный / особый случай ...
  • три или четыре квадрата соединились, чтобы сделать вогнутую форму, как кусок тетриса (Т) 'L' кусок

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

Спасибо!

Обновление: причина, по которой мы хотим это сделать, заключается в том, что мы хотим показать квадраты, принадлежащие к одной и той же группе, которые расположены рядом друг с другом, в частности, в массиве 2xn (но в некоторых случаев). Может быть, есть более простой ответ, если я просто переберу различные квадраты и сформирую группы другим способом?

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Вы смотрите на это с точки зрения "У меня есть квадраты".

Но вы должны смотреть на это с точки зрения «У меня есть очки» (каждый квадрат - всего 4 очка).

То, что вы на самом деле ищете, называется "Выпуклая оболочка" - и на этот вопрос уже был дан ответ на вопрос:

Многоугольник, содержащий множество точек

На самом деле я начал строить схемы вашего решения, чтобы решить его, и именно тогда это произошло со мной.

Я понял, когда делал свои диаграммы, что контур этих фигур имеет несколько интересных свойств - когда я подумал: «Да, верно - кто-то уже сделал это - это должно быть уже».

Итак, я гуглил «построить наименьший многоугольник, охватывающий другие многоугольники»

И нашел другой С.О. вопрос.

Хотя у вас есть два, казалось бы, разнородных требования:

два квадрата, диагональные как прямоугольник с треугольниками в каждом конец в 45 градусов - это, вероятно, самый нерегулярный / особый случай ... три или четыре квадрата соединены, чтобы сделать выпуклую форму, как Тетрис (ТМ) шт. 'L' шт.

В первом примере выше вы говорите, что хотите «Выпуклый корпус».

Но во втором примере выше (части тетриса) вам понадобится "Вогнутый корпус".

Удачи.

Вот мои диаграммы:

enter image description here enter image description here enter image description here enter image description here

0 голосов
/ 27 февраля 2012

Мне интересно, почему вы хотите это сделать.

В любом случае моя интуиция , которую вы хотите найти, называется "вогнутой оболочкой", но я не эксперт.

Проверьте этовопрос и посмотрите, хотите ли вы этого.

Редактировать: также этот вопрос на gis.stackexchange.com

...