我最近看到了很多与画布图形相关的 javascript 项目和库,想知道它们如何处理坐标系。在画布上绘制形状和矢量时,点是基于笛卡尔平面计算并为画布转换的,还是一切都直接为画布计算?
我尝试通过绘制所有切线来绘制一个圆,直到线的交点开始类似于曲线,并发现我熟悉的笛卡尔平面与 Web 浏览器使用的坐标系之间的差异非常令人困惑。圆的函数,例如,“y^2 + x^2 = r^2”需要转换为“(y-1)^2 + (x-1)^2 = r^2”可以在画布上看到。然后负斜率是画布上的正斜率,一切都会颠倒:/。
对我来说,最简单的思考方法是假装笛卡尔平面的原点位于画布的中心,并相应地调整我的坐标。在 500 x 500 的画布上,中心是 250,250,所以如果我最终在 50,50 处绘制一个点,它将在 (250 + 50, 250 - 50) = (300, 200) 处绘制。
我觉得我把这件事复杂化了,但我无法用干净的方式来使用画布。