0

由于我最近几天一直在尝试将这个 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
4

0 回答 0