2016-09-30 3 views

ответ

1

Я считаю, что в 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 с, но можно также использовать матрицу умножить, если вы отчаянно пытались сохранить его высокий уровень.

+1

Да, я боялся этого. Вздох. Делает ненужный и громоздкий/многословный код для операций с такими функциями. Onwards. Спасибо. – dugla

+0

Ahh, на самом деле я могу перегрузить + -/*, чтобы сделать вещи немного более краткими. Swift FTW. – dugla

 Смежные вопросы

  • Нет связанных вопросов^_^