gpt4 book ai didi

c# - 分解二维变换矩阵

转载 作者:行者123 更新时间:2023-11-30 20:30:13 28 4
gpt4 key购买 nike

因此,我有一个 Direct2D Matrix3x2F 用于存储几何变换。我希望这些转换是用户可编辑的,我不希望用户必须直接编辑矩阵。是否可以将 3x2 矩阵分解为缩放、旋转、倾斜和平移?

最佳答案

这是我为 Direct2D 转换矩阵找到的解决方案:

  • 缩放 x = sqrt(M11 * M11 + M12 * M12)

  • 缩放 y = sqrt(M21 * M21 + M22 * M22) * cos(剪切)

  • rotation = atan2(M12, M11)

  • 剪切 (y) = atan2(M22, M21) - PI/2 - 旋转

  • 翻译 x = M31

  • 翻译 y = M32

如果您按照 scale(x, y) * skew(0, shear) * rotate(angle) * translate(x, y) 的顺序将这些值相乘,您将得到一个矩阵执行等效转换。

关于c# - 分解二维变换矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45159314/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com