1

给定一个仿射二维变换矩阵,例如:

[a  b  tx]
[c  d  ty]
[0  0  1 ]
  • 对于绕原点的顺时针旋转,a由变换cos (θ)并由bsin (θ)

  • 对于 scaleFactor sx 的 scaleX,a转换为sx

  • 对于平行于 x 轴的剪切,x' = x + ky b转换为k


在我的示例a中,通过旋转和 scale-xb转换了两次,一次通过旋转,一次通过剪切。

旋转不再只是arcsin(b)

ScaleX 不再只是1 / a

ShearX 不再只是x - ky


如何从该矩阵中获取rotationshearXscaleX返回的值?

4

1 回答 1

5

所以旋转矩阵(完整)将是(我省略了无聊的部分)

R=
a=cos(θ)  c=sin(θ)
b=-sin(θ) d=cos(θ)

而比例和剪切矩阵将是(同样,省略了无聊的部分)

S=
a=s  b=k 
c=0  d=1

现在应用第一个旋转(R),然后缩放和剪切(S)将只是将矩阵相乘,从而得到结果矩阵

S times R
a=s cos(θ) - k sin(θ)   b=s sin(θ)+k cos(θ)
c=-sin(theta)    d=cos(theta)

如果你想从中得到 θ、s 和 k,你可以确定 θ =arcsin(-c)。你知道 sin(θ) 和 cos(θ),所以你可以求解两个有两个未知数的线性方程 (a=s cos(θ) - k sin(θ) b=s sin(θ)+k cos(θ))找到 s 和 k。

于 2012-06-17T13:42:13.137 回答