Я строю что-то, где мне нужно нарисовать несколько прямоугольников, либо сложив их, либо вычтя их, и из этого получим один или несколько многоугольников, представляющих общую площадь, вложенную в них. Это будет работать подобно тому, что вы видите в программах рисования и т. Д., Где вы можете создать выделение, рисуя прямоугольники и нажимая кнопку + или -, чтобы определить, добавлять или вычитать текущую выделенную область.
Я могу сделать весь код рисования, но мне нужно знать, как преобразовать упорядоченные серии прямоугольников, каждый из которых имеет режим «сложения» или «вычитания», в один или несколько многоугольников. Вот как я себе это представляю:
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},
...
]
Полагаю, это должно быть довольно стандартное графическое украшение.