Math 将矩阵转换为组件块

Math 将矩阵转换为组件块,math,matrix,transform,inverse,Math,Matrix,Transform,Inverse,给定仿射2D变换矩阵,例如: [a b tx] [c d ty] [0 0 1 ] 对于围绕原点的顺时针旋转,a通过cos(θ)进行变换,b通过sin(θ) 对于scaleFactor sx的scaleX,a通过sx 对于平行于x轴的剪力,x'=x+kyb通过k 在我的示例中,a通过旋转和scale-x变换两次,b通过旋转和剪切变换两次 旋转不再只是arcin(b) ScaleX不再只是1/a ShearX不再只是x-ky 如何从该矩阵中获取rotation、shearX和

给定仿射2D变换矩阵,例如:

[a  b  tx]
[c  d  ty]
[0  0  1 ]
  • 对于围绕原点的顺时针旋转,
    a
    通过
    cos(θ)
    进行变换,
    b
    通过
    sin(θ)

  • 对于scaleFactor sx的scaleX,
    a
    通过
    sx

  • 对于平行于x轴的剪力,
    x'=x+ky
    b
    通过
    k


在我的示例中,
a
通过旋转和scale-x变换两次,
b
通过旋转和剪切变换两次

旋转不再只是
arcin(b)

ScaleX不再只是
1/a

ShearX不再只是
x-ky


如何从该矩阵中获取
rotation
shearX
scaleX
的值

因此旋转矩阵(完整)将为(我省略了钻孔部分)

而比例和剪切矩阵(同样,忽略钻孔部分)

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

S times R
a=s cos(θ) - k sin(θ)   b=s sin(θ)+k cos(θ)
c=-sin(theta)    d=cos(theta)
如果你想从中得到θ,s和k,你可以确定θ=arcin(-c)。你知道sin(θ)和cos(θ),所以你可以用两个未知数解两个线性方程(a=s cos(θ)-k sin(θ)b=s sin(θ)+k cos(θ))来求s和k

因此旋转矩阵(完整)将为(我省略了钻孔部分)

而比例和剪切矩阵(同样,忽略钻孔部分)

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

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

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

家庭作业?如果是,请贴上这样的标签。不是作业。只是好奇。查看我的个人资料,寻找我完成学业的证据=]我看不到任何证据,但没关系。我相信你的话。我21岁,是一名软件开发人员。“在互联网上,没人能看出你是一只狗。”-21岁是大学的黄金年龄,很多学生都有兼职工作。家庭作业?如果是,请贴上这样的标签。不是作业。只是好奇。查看我的个人资料,寻找我完成学业的证据=]我看不到任何证据,但没关系。我相信你的话。我21岁,是一名软件开发人员。“在互联网上,没人能看出你是一只狗。”-21岁是大学的黄金年龄,很多学生都有兼职工作。联立方程!精巧的联立方程组!精巧的
S times R
a=s cos(θ) - k sin(θ)   b=s sin(θ)+k cos(θ)
c=-sin(theta)    d=cos(theta)