使用 scale(1,-1),以 y 轴作为对称轴镜像反转, 就可得到著名的笛卡尔坐标系,左下角为原点
参考 MDN Web Docs:缩放 Scaling
使用 translate(0,canvas.height); scale(1,-1);
以 y 轴作为对称轴镜像反转, 就可得到著名的 笛卡尔坐标系 ,左下角为原点
因此,修改 第一版的代码 ,更改部分如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| let xoffset = xMin * scale - canvasWidth / 3 / 2; let yoffset = yMax * scale - (canvasHeight / 3 / 2) * 5;
ctx.translate(-xoffset, canvasHeight + yoffset); ctx.scale(1, -1);
area = area.map(obj => { return [obj.x * scale, obj.y * scale]; });
drawArea(area);
points.forEach(obj => { drawPoint(obj.x * scale, obj.y * scale); });
|