ios - GL套件。如何分配给 GLKVector3 的组件

标签 ios macos glkit

分配给 GLKVector3(或 4)字段的正确方法是什么?

这失败了: enter image description here

这是有道理的,因为 .x.z 是 setter/getter 。解决方法是什么?

最佳答案

我相信在 Swift 中 GLKVector3 是不可变的,无论是 var 还是 let。使用 GLKVector3Make 创建具有任意 Float 值的;随后为新实例生成新结果。

所以:

let ballLocation = GLKVector3Make(
     (locationInBallCoordinates.x - ballCentre.x) / ballRadius,
     0.0,
     (locationInBallCoordinates.y - ballCentre.y) / ballRadius)

或者,如果 locationInBallCoordinatesballCentre 已经是 GLKVector3 的实例 — 以及我没有的 y-to-z 组件切换注意到当我第一次写这个答案时不存在 — 然后:

let ballLocation = 
    GLKVector3DivideScalar(
        GLKVector3Subtract(locationInBallCoordinates, ballCentre),
        ballRadius)

y 移动到 z 可能是最简单的解包和重新打包,但如果您迫切希望保持高水平,您也可以使用矩阵乘法。

关于ios - GL套件。如何分配给 GLKVector3 的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39798458/

相关文章:

ios - 在 Interface Builder 中呈现自定义 UITextField 子类时出错

ruby-on-rails - 在 Mountain Lion 上使用 Homebrew 和 Rails 安装 postgresql

ios - 四元数的 Arcball 旋转(使用 iOS GLKit)

ios - 如何在 iOS 中添加和获取 .plist 的值

jQuery .submit() 在 iPad 上被忽略

xcode - 如何使 Codeblocks 在 macOS big sur 上运行?

c++ - 在 CMakeList.txt 文件中包含 OpenSSL

objective-c - sizeof() 返回包含 GLKVector3、GLKVector4 变量的结构的错误大小

ios - 扩展名为 .Shader、.vsh、.fsh 的着色器有什么区别?

ios - CoreData严重应用错误