我正在研究html5 canvas应用程序,其中我在画布上绘制矩形。
我的问题:
当画布旋转时,如何将点击屏幕上的点转换为画布绘制点的旋转
答案 0 :(得分:8)
我为此目的制作了一个微小的变换类:
https://github.com/simonsarris/Canvas-tutorials/blob/master/transform.js
然后您可以像这样使用它:
var t = new Transform();
console.log(t.transformPoint(5,6)); // will be just [5,6]
// apply the same transformations that you did to the canvas
t.rotate(1);
console.log(t.transformPoint(5,6)); // will be [-2.347, 7.449]
小提琴:
答案 1 :(得分:7)
I am affraid that we will have to use math.
使用旋转角度的负值旋转一个点,使用以下公式获得旋转平面上的位置:
nX = x * cos(a) - y * sin(a)
nY = x * sin(a) + y * cos(a)
其中a
为旋转值负值
你的观点现在是普通的非旋转平面,所以剩下的逻辑就像angle = 0
这是一个演示小提琴:
这是一个翻译版本: