默认情况下,旋转矩阵使用原点作为旋转的中心.要围绕任意点旋转,您必须使用平移矩阵减去到原点的距离,进行旋转,然后平移.除了这对我来说似乎没有那么好用.我有以下代码(假设我的对象是100x100,中心为50,50):
t = IDENTITY;
t = translate(t, -50, -50);
t = rotate(t, theta);
t = translate(t, 50, 50);
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我将此变换矩阵t应用于我的对象,则对象定位不正确.
我已经实现了一个快速的jsfiddle来演示我的问题:http://jsfiddle.net/9M3uy/67/
在JSFiddle中,红色旋转的方块是旋转应该结束的地方(由CSS3内置的变换原点提供),蓝色旋转的方块是我的计算结束的地方(绿色将是原始的非旋转方块) ).
有任何想法吗?我只是不明白翻译,旋转,翻译机制是如何运作还是我做了一些可怕的错误?