Преобразование из одной структуры в другую
Я конвертирую некоторый код Objective-C в Swift-код, и у меня есть следующая проблема:
код objective-C-это
SCNNode *textNode = [SCNNode nodeWithGeometry:text];
textNode.transform = CATransform3DInvert(self.chartNode.worldTransform);
Это преобразованный код, который я пробовал:
let textNode = SCNNode(geometry: text)
textNode.transform = CATransform3DInvert(self.chartNode.worldTransform)
однако я получаю сообщение об ошибке: "SCNMatrix4 не конвертируется в CATransform3D"
я понял, что CATransform3DInvert принимает параметр типа CATransform3D, а параметр, который я включил, имеет тип SCNMatrix4.
я попробовал следующий попытка бросить:
textNode.transform = CATransform3DInvert(CATransform3D(self.chartNode.worldTransform))
но это не работает.
затем я обнаружил, что оба CATransform3D и SCNMatrix4 являются обеими структурами, и я не уверен в том, как конвертировать из одной структуры в другую (или даже если можно конвертировать между структурами в Swift?)
может быть, есть другой более простой подход?
любая помощь будет оценили - спасибо.
1 ответов
Ok,
ссылка, предоставляемая скоростью воздушной скорости, имеет хорошее объяснение, которое легко преобразовать в Swift (на самом деле это то же самое).
в CATransform3D и т. д. Mac ОС X и не для iOS, а на iOS SCNMatrix4 и т. д. не используется. В связанном post - файле заголовка вы можете найти используемые типы-SceneKitTypes.h-если вы хотите посмотреть копию на github здесь: https://github.com/andymatuschak/Khan-Academy-Offer-Acceptance-Toy/blob/master/§/SceneKitTypes.h
я использовал SCNMatrix4Invert как rintaro, упомянутый выше, и он работает.
Итак, Swift-код, который работает сейчас:
let textNode = SCNNode(geometry: text)
textNode.transform = SCNMatrix4Invert(self.chartNode.worldTransform)