gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:10:38 26 4
gpt4 key购买 nike

我试图让我的代码没有警告。因为我刚刚更新了我的 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/

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