【问题标题】:Transform Matrix into component pieces将矩阵转换为组件
【发布时间】:2012-06-17 09:16:45
【问题描述】:

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

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

  • 对于 scaleFactor sx 的 scaleX,asx 转换

  • 对于平行于 x 轴的剪切,x' = x + ky bk 变换


在我的示例中,a 通过旋转和缩放 x 进行了两次变换,b 进行了两次变换,一次通过旋转,一次通过剪切。

旋转不再只是arcsin(b)

ScaleX 不再只是 1 / a

ShearX 不再只是 x - ky


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

【问题讨论】:

  • 家庭作业?如果是,请标记它。
  • 不是作业。好奇而已。查看我的个人资料,了解我已经完成学业的证据 =]
  • 没有我能看到的证据,但没关系。我会相信你的话。
  • 我今年 21 岁,是一名软件开发人员。
  • “在互联网上,没有人能看出你是一只狗。” - 21 岁是大学的黄金年龄,很多学生都有兼职工作。

标签: math matrix transform inverse


【解决方案1】:

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

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

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

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

现在应用 FIRST 旋转 (R),THEN 缩放和剪切 (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。

【讨论】:

  • 联立方程!巧妙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 2011-04-18
  • 2018-11-20
相关资源
最近更新 更多