如何将matrix转换与Flash中的非统一屏幕缩放结合起来?

我正在使用Flash 转换matrix进行仿射变换

我有一个矩形图像被旋转和缩放(2D)。 有两组缩放variables:ScreenScaleX和ScreenScaleY,ScaleX和ScaleY,以及一个逆时针旋转角度theta。 ScreenScaleX和ScreenScaleY是窗口的缩放因子; 旋转图像后,应将其应用于原始 X轴和Y轴的方向。 ScaleX和ScaleY应该在旋转图像之后应用于新的 X和Y方向。

例如:如果theta是90度,ScreenScaleX和ScreenScaleY仍然会沿着原始X / Y轴的方向拉伸,但是现在ScaleY将在屏幕的X方向上拉伸,并且ScaleX将在屏幕的Y方向上拉伸。

我想我可以通过缩放,旋转和倾斜的组合来实现这一点,但是我正在努力弄清楚matrix的外观。 我将如何从这些variables构造一个matrix来执行这个转换?

我想我解决了它。 答案是:

var matrix = new Matrix(); var cos = Math.cos(angle); var sin = Math.sin(angle); matrix.a = scaleX * cos * screenScaleX; matrix.b = scaleX * sin * screenScaleY; matrix.c = -scaleY * sin * screenScaleX; matrix.d = scaleY * cos * screenScaleY; 

这样,屏幕可以使用不均匀的缩放,而不会使旋转的图像失真。