由于我最近几天一直在尝试将这个 swift 代码翻译成 Kotlin 用于一个大学应用程序,我想我可能需要帮助。
var rotationAndPerspectiveTransform = CATransform3DIdentity
rotationAndPerspectiveTransform.m34 = 1 / -100
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0 * .pi / 180.0, 1.0, 0.0, 0.0)
self.layer.anchorPoint = CGPoint(x: 0.5, y: 0.5)
self.layer.transform = rotationAndPerspectiveTransform
我需要在自定义视图中转换画布:
override fun draw(canvas: Canvas?) {
super.draw(canvas)
canvas?.let {
val matrix = Matrix()
val camera = Camera()
// Transform ...
it.drawPath(path(-150F), paint())
it.drawPath(path(150F), paint())
}
}
我的理解是:
- .m34 是一个 4v4 索引矩阵,在 3/4 处为 -0.01
- 然后这个矩阵在 x 轴上旋转 45 度:
t' = rotation(angle, x, y, z) * t.
- 然后将锚点设置为中心(0.5/ 0.5)
- 最后将旋转应用于图层
我不明白的是:
- 如何将这些步骤翻译成 Kotlin