Преобразование из одной структуры в другую

Я конвертирую некоторый код 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)