Каков правильный способ назначить поле GLKVector3 (или 4)?GLKit. Как назначить компоненту GLKVector3
Который имеет смысл, так как .x
и .z
являются добытчиками. Каков обходной путь?
Каков правильный способ назначить поле GLKVector3 (или 4)?GLKit. Как назначить компоненту GLKVector3
Который имеет смысл, так как .x
и .z
являются добытчиками. Каков обходной путь?
Я считаю, что в Swift GLKVector3
s неизменяемы, будь то var
или let
. Используйте GLKVector3Make
для создания одного с произвольными значениями Float
; впоследствии генерировать новые результаты для новых экземпляров.
Итак:
let ballLocation = GLKVector3Make(
(locationInBallCoordinates.x - ballCentre.x)/ballRadius,
0.0,
(locationInBallCoordinates.y - ballCentre.y)/ballRadius)
Или, если locationInBallCoordinates
и ballCentre
были уже случаи GLKVector3
- и переключатель компонента у-к-г, что я не заметил, когда я впервые написал этот ответ не было - затем:
let ballLocation =
GLKVector3DivideScalar(
GLKVector3Subtract(locationInBallCoordinates, ballCentre),
ballRadius)
Это, наверное, проще всего распаковать и упаковать для перемещения y
сек в z
с, но можно также использовать матрицу умножить, если вы отчаянно пытались сохранить его высокий уровень.
Да, я боялся этого. Вздох. Делает ненужный и громоздкий/многословный код для операций с такими функциями. Onwards. Спасибо. – dugla
Ahh, на самом деле я могу перегрузить + -/*, чтобы сделать вещи немного более краткими. Swift FTW. – dugla