2014-12-15 18 views
10

ja konwersji część kodu celu C do kodu Swift i następujący problem:Konwersja z jednego struktury z innym

kodu celem-C

SCNNode *textNode = [SCNNode nodeWithGeometry:text]; 
textNode.transform = CATransform3DInvert(self.chartNode.worldTransform); 

to przekonwertowany I Kod próbowałem:

let textNode = SCNNode(geometry: text) 
textNode.transform = CATransform3DInvert(self.chartNode.worldTransform) 

Jednakże pojawia się błąd: 'SCNMatrix4 nie jest wymienialny na CATransform3D'

Zrozumiałem, że CATransform3DInvert przyjmuje parametr typu CATransform3D, a parametr I obejmuje typ SCNMatrix4.

Próbowałem następującą próbę Obsada:

textNode.transform = CATransform3DInvert(CATransform3D(self.chartNode.worldTransform)) 

ale to nie działa.

I wtedy okazało się, że zarówno CATransform3D i SCNMatrix4 są zarówno kodowanym i jestem pewien, w jaki sposób przekonwertować z jednej struktury do drugiej (lub nawet jeśli jest to możliwe do konwersji między kodowanym w Swift?)

Może tam to kolejne prostsze podejście?

Każda pomoc byłaby doceniona - dziękuję.

+1

Wygląda na to odpowiedział za Objective-C [tutaj] (http://stackoverflow.com/questions/26263605/catransform3dscale-expecting-catransform3d -struct-not-scnmatrix4), porady powinny być dość łatwe do przesłania do Swift. –

+2

Dlaczego nie używasz 'SCNMatrix4Invert'? – rintaro

+1

Dziękuję za link. –

Odpowiedz

3

Ok,

link podany przez prędkościomierzach Velocity ma ładne wyjaśnienie, które jest łatwe do konwersji Swift (w rzeczywistości jest to samo).

CATransform3D itp. Jest oparty na systemie Mac OS X i nie jest przeznaczony dla iOS - zamiast tego w systemie iOS jest używany SCNMatrix4 itp. w połączonej postu - plik nagłówka można wybrać typy używane jest SceneKitTypes.h - jeśli chcesz wyglądać egzemplarz jest na github tutaj: https://github.com/andymatuschak/Khan-Academy-Offer-Acceptance-Toy/blob/master/§/SceneKitTypes.h

użyłem SCNMatrix4Invert jak Rintaro wspomniano powyżej i to działa.

Tak, Swift kod, który działa obecnie:

let textNode = SCNNode(geometry: text) 
textNode.transform = SCNMatrix4Invert(self.chartNode.worldTransform)