我是超级无敌杀人王啊啊啊!!!!!
最近在做一个类似编辑器的东西。
目前需要的是使用线性变换去控制画布的旋转、缩放、平移。
另外我需要视口(中间灰色部分)中的点to canvas的相对坐标,即世界坐标to canvas 的相对坐标。
还有,我需要设置一个canvas上的点(canvas的相对坐标),另其总是在视口的中心。
这是canvas的样式:
因为需要进行坐标变换操作,所以我使用矩阵变换来实现画布的css的transform,并且另canvas(在css中)的变换原点设置为(0,0)。
canvas画布 变换部分数据结构:
变换矩阵的算法
其中的view就是canvas的父元素。
世界坐标to局部坐标的时候,只需要使用逆矩阵和对应的变换操作就行了。 demo效果:点击时和滚轮时在控制台输出当前的局部坐标。