【发布时间】:2018-08-06 11:01:43
【问题描述】:
给定一个CATransform3D 变换,我想将缩放、平移和旋转提取为单独的变换。通过一些挖掘,我能够在 Swift 中为 CGAffineTransform 完成此操作,如下所示:
extension CGAffineTransform {
var scaleDelta:CGAffineTransform {
let xScale = sqrt(a * a + c * c)
let yScale = sqrt(b * b + d * d)
return CGAffineTransform(scaleX: xScale, y: yScale)
}
var rotationDelta:CGAffineTransform {
let rotation = CGFloat(atan2f(Float(b), Float(a)))
return CGAffineTransform(rotationAngle: rotation)
}
var translationDelta:CGAffineTransform {
return CGAffineTransform(translationX: tx, y: ty)
}
}
如何使用数学为CATransform3D 做类似的事情? (我正在寻找不使用密钥路径的解决方案。)
(由您自行决定实施或仅数学答案)
【问题讨论】:
-
但注意苹果的矩阵是转置的,见*.com/a/1260909/341994
-
我会进一步研究这个问题,看看我是否无法在接下来的几天内回答我自己的问题。
标签: swift catransform3d