Javascript 如何计算多边形中适合的矩形数?

Javascript 如何计算多边形中适合的矩形数?,javascript,canvas,html5-canvas,Javascript,Canvas,Html5 Canvas,我正在使用JavaScript+Canvas创建一个算法,用户可以绘制一个多边形,然后我想计算这个多边形中有多少矩形(假设我知道尺寸) 例如,我有3个黄色多边形的示例(矩形、三角形和复杂多边形),我想知道其中包含多少个矩形 如果矩形可以切割 矩形的面积是宽度*高度 使用下面的函数,可以从定义顶点的点集中找到任何具有直边的多边形的区域。定义每条边的顶点的叉积之和的一半 const polyArea = points => { var i = 0, area = 0, len = po

我正在使用JavaScript+Canvas创建一个算法,用户可以绘制一个多边形,然后我想计算这个多边形中有多少矩形(假设我知道尺寸)

例如,我有3个黄色多边形的示例(矩形、三角形和复杂多边形),我想知道其中包含多少个矩形

如果矩形可以切割 矩形的面积是宽度*高度

使用下面的函数,可以从定义顶点的点集中找到任何具有直边的多边形的区域。定义每条边的顶点的叉积之和的一半

const polyArea = points => {
    var i = 0, area = 0, len = points.length;
    while (i < len) { 
        const p1 = points[i++];
        const p2 = points[i % len];
        area += p1.x * p2.y - p1.y * p2.x;
    }
    return Math.abs(0.5 * area);
}
// example
const triangleArea = polyArea([{x:100, y:0}, {x: 200, y: 200}, {x: 0, y: 200}]);
const polyArea=points=>{
变量i=0,面积=0,长度=points.length;
而(i
一个多边形中可以容纳的最大矩形数是
polygorea/rectangleArea

如果矩形不能被切割 但是,矩形的实际数量将是从0到上面计算的数量之间的某个值


除了在不同模式中放置矩形以查看哪种模式最适合外,没有简单的解决方案。对于每个多边形,可以使用的模式数量是无限的,因此,如果您想在午餐前完成id,任何解决方案都只是众多猜测中最好的一个。

对不起,这个问题太广泛了,没有代码,您能否说明您尝试了什么,并解释您遇到了什么困难。。。你应该读到:现在关于你问的问题,我猜你真正想知道的是一个多边形中可以容纳的最大矩形数。。。不要低估这个问题,这是一个复杂的优化任务,您可能想看看一些可用的算法:。。。如果您需要的只是一个粗略的近似值,您可以将第一个矩形随机放置在多边形内,然后将其他矩形添加到边上,只要它们不超出多边形的边界polygon@Lucas矩形和三角形的计算相当简单——棘手的部分是任意形状。用户应该能够绘制任何形状?@是的,但它们通常是三角形、矩形、菱形、平行四边形和梯形。