Javascript 多边形的布尔矩形

Javascript 多边形的布尔矩形,javascript,graphics,Javascript,Graphics,我正在构建一个需要绘制多个矩形的东西,可以添加或减去它们,然后从中生成一个或多个表示整个封闭区域的多边形。这与您在绘制程序等中看到的情况类似,您可以通过绘制矩形并单击+或-按钮来创建选择,以确定是从当前选定区域添加还是减去 我可以做所有的绘图代码,但需要知道如何将一系列有序的矩形(每个矩形都有一个加法或减法模式)转换成一个或多个多边形。以下是我对其使用的设想: var rectList = [ {x: 50, y: 40, w: 20, h: 30, mode: "+"}, {x: 24,

我正在构建一个需要绘制多个矩形的东西,可以添加或减去它们,然后从中生成一个或多个表示整个封闭区域的多边形。这与您在绘制程序等中看到的情况类似,您可以通过绘制矩形并单击+或-按钮来创建选择,以确定是从当前选定区域添加还是减去

我可以做所有的绘图代码,但需要知道如何将一系列有序的矩形(每个矩形都有一个加法或减法模式)转换成一个或多个多边形。以下是我对其使用的设想:

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);
多边形列表可能看起来像一个点数组。下面的数字只是虚构的,与上面的输入无关

[
 [
  {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},
  ... 
 ]
我想这一定是相当标准的图形宝石之类的东西