在 canvas 中怎么计算不规则图形的面积?
在 canvas 中怎么计算不规则图形的面积?在 canvas 中,用鼠标绘制了一个不规则图形,不要第三方js库,怎么计算这个不规则图形的面积?要源码
回复
1个回答

test
2024-06-20
自己算需要分割三角形,遍历多边形的每个顶点,交叉相乘相应的坐标以找到包围该多边形的区域
高斯面积公式 wiki
公式翻译为代码
function getPolygonArea(points) {
var numPoints = points.length;
var area = 0;
var i, j;
for (var i = 0, j = numPoints - 1; i < numPoints; i++) {
var pi = points[i];
var pj = points[j];
area += (pj.x - pi.x) * (pi.y + pj.y);
j = i;
}
return Math.abs(area / 2);
}
// ex 以A为起点,顺时针。 逆时针也是可以的
var polygonPoints = [
{ x: 5, y: 0 },
{ x: -5, y: -6 },
{ x: -10, y: 2 },
{ x: -2, y: 15 },
{ x: 7, y: 10 },
];
var area = getPolygonArea(polygonPoints);
console.log('多边形的面积为:', area);
注意:方法中的点位必须是按照顺序传入,逆时针 顺时针都行,不能胡乱传入注意:方法中的点位必须是按照顺序传入,逆时针 顺时针都行,不能胡乱传入验算:
用canvas
库,基本都提供了计算多边形面积的方法
- Paper.js:
Path
对象有area
属性,可以用于获取面积。
var path = new Path([point1, point2, point3, ...]);
var area = path.area;
- Fabric.js:
Polygon
对象可以用getArea
方法来获取多边形的面积。
var polygon = new fabric.Polygon(points, {
fill: 'red',
});
var area = polygon.getArea();
其他的库你可以自己找找看
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容