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

这将失败:
ios - GLKit。如何分配给GLKVector3的组件-LMLPHP

这是有道理的,因为.x.z是吸气剂。解决方法是什么?

最佳答案

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

所以:

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


或者,如果locationInBallCoordinatesballCentre已经是GLKVector3的实例-并且在我初次写此答案时没有注意到的y-z组件开关不存在-那么:

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


拆包和重新包装以将y移入z可能是最容易的,但是如果您迫切希望将其移到更高的水平,也可以使用矩阵乘法。

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

10-11 13:44