swift - 如何将 float3 转换为 SIMD3<Float>(Xcode 11 Swift 5 使用 float3 和 float4 给出折旧警告)

标签 swift xcode floating-point

我试图让我的代码没有警告。因为我刚刚更新了我的 Xcode 并且我知道收到警告信号。我也尝试在下面解决这个问题。

这是给我警告的代码:

代码:

extension float4x4 {
var translation: float3 {
    return float3(columns.3.x, columns.3.y, columns.3.z)
}

init(translation vector: float3) {
    self.init(float4(1, 0, 0, 0),
              float4(0, 1, 0, 0),
              float4(0, 0, 1, 0),
              float4(vector.x, vector.y, vector.z, 1))
 }
}

extension float4 {
  var xyz: float3 {
    return float3(x, y, z)
}

enter image description here

这是我试图在下面翻译:

代码:
extension SIMD4 {
var translation: SIMD3<Float> {
    return SIMD3(columns.3.x, columns.3.y, columns.3.z)
}

  init(translation vector: SIMD3<Float>) {
    self.init(SIMD4<Float>(1, 0, 0, 0),
              SIMD4<Float>(0, 1, 0, 0),
              SIMD4<Float>(0, 0, 1, 0),
              SIMD4(vector.x, vector.y, vector.z))
  }
}

  extension SIMD4 {
    var xyz: SIMD3<Float> {
      return SIMD3<Float>(x, y, z) as! SIMD3<Float>
    }
  }

enter image description here

最佳答案

看起来您不小心扩展了 SIMD4当你真的想扩展 float4x4 (与 float3float4 不同,不推荐使用)。

此外,在您的其他扩展中,它可能应该是 SIMD3<Scalar> ,不是 SIMD3<Float> ,所以 xyz将返回 SIMD3具有相同类型的 Scalar随便 SIMD4呼吁:

extension float4x4 {
    var translation: SIMD3<Float> {
        SIMD3(columns.3.x, columns.3.y, columns.3.z)
    }

    init(translation vector: SIMD3<Float>) {
        self.init(.init(1, 0, 0, 0),
                  .init(0, 1, 0, 0),
                  .init(0, 0, 1, 0),
                  .init(vector.x, vector.y, vector.z, 1))
    }
}

extension SIMD4 {
    var xyz: SIMD3<Scalar> {
        SIMD3(x, y, z)
    }
}

关于swift - 如何将 float3 转换为 SIMD3<Float>(Xcode 11 Swift 5 使用 float3 和 float4 给出折旧警告),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59915812/

相关文章:

swift - 使用 SWIFT 以编程方式自定义 UITableViewCell

ios - iOS 单元和 UI 测试中忽略的方案语言设置

ios - 如何在 Apple xcode 设备模拟器中安装并启动 Home.app?

swift - Realm 通知连续多次触发

ios - iOS 上的高精度室内地理定位

ios - Xcode - swift ;为启动屏幕添加音效

objective-c - Xcode:在调试中确定 xcode 中函数的调用者

c++ - 整数除法始终为零

floating-point - IEEE 754 标准中哪里指定了 `Inf * 0` 的结果?

c - 在 C 中有效地提取 double 的小数部分