分配给GLKVector3(或4)字段的正确方法是什么?
这将失败:
这是有道理的,因为.x
和.z
是吸气剂。解决方法是什么?
最佳答案
我相信Swift中的GLKVector3
是不可变的,无论是var
还是let
。使用GLKVector3Make
创建一个具有任意Float
值的值;随后为新实例生成新结果。
所以:
let ballLocation = GLKVector3Make(
(locationInBallCoordinates.x - ballCentre.x) / ballRadius,
0.0,
(locationInBallCoordinates.y - ballCentre.y) / ballRadius)
或者,如果
locationInBallCoordinates
和ballCentre
已经是GLKVector3
的实例-并且在我初次写此答案时没有注意到的y-z组件开关不存在-那么:let ballLocation =
GLKVector3DivideScalar(
GLKVector3Subtract(locationInBallCoordinates, ballCentre),
ballRadius)
拆包和重新包装以将
y
移入z
可能是最容易的,但是如果您迫切希望将其移到更高的水平,也可以使用矩阵乘法。关于ios - GLKit。如何分配给GLKVector3的组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39798458/