булевы прямоугольники в многоугольники - PullRequest
2 голосов
/ 25 марта 2011

Я строю что-то, где мне нужно нарисовать несколько прямоугольников, либо сложив их, либо вычтя их, и из этого получим один или несколько многоугольников, представляющих общую площадь, вложенную в них. Это будет работать подобно тому, что вы видите в программах рисования и т. Д., Где вы можете создать выделение, рисуя прямоугольники и нажимая кнопку + или -, чтобы определить, добавлять или вычитать текущую выделенную область.

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

var rectList = [
 {x: 50, y: 40, w: 20, h: 30, mode: "+"},
 {x: 24, y: 12, w: 14, h: 62, mode: "+"},
 {x: 12, y: 30, w: 34, h: 14, mode: "-"},
 {x: 22, y: 21, w: 45, h: 19, mode: "+"},
 {x: 17, y: 20, w: 10, h: 21, mode: "+"}
 ];

var polygonList =  getPolygonsFromRectangleList (rectList);

Список polygonList может выглядеть следующим образом (массив массивов точек). (Числа ниже просто составлены и не имеют никакого отношения к вводу выше)

[
 [
  {x: 23, y: 12},
  {x: 14, y: 12},
  {x: 14, y: 36},
  {x: 24, y: 36},
  ....
 ],
 [
  {x: 32, y: 45},
  {x: 32, y: 22},
  {x: 14, y: 22},
  ... 
 ]

Полагаю, это должно быть довольно стандартное графическое украшение.

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