2014-10-06 1 views
2

이 코드를 Objective-C에서 Swift로 변환하려고하는데,이 상황에서 vector_mix이 무엇을하는지 파악하는 데 어려움을 겪고 있습니다. Swift에서 vector_mix을 사용할 수 있지만 vector_float3 유형을 사용할 수 없음을 알았습니다.Objective-C에서 Swift로 vector_float3를 복제하려면 어떻게해야합니까?

SCNNode *car = [_vehicleNode presentationNode]; 
SCNVector3 carPos = car.position; //this is a SCNVector3 
vector_float3 targetPos = {carPos.x, 30., carPos.z + 25.}; 
vector_float3 cameraPos = SCNVector3ToFloat3(_cameraNode.position); 
cameraPos = vector_mix(cameraPos, targetPos, (vector_float3)(cameraDamping)); 
_cameraNode.position = SCNVector3FromFloat3(cameraPos); 

targetPos에서 cameraPos은 Y에서 X를 복용하고 cameraDamping에서 Z를 만드는 것 같다,하지만 왜 당신도 targetPosx, yz를 작성 귀찮게 것?

나는 this에서 vector_float3을 Swift에서 사용할 수 없다는 것을 알고 있지만, 비슷한 것을 시뮬레이트 할 수있는 방법이 있어야합니다. 나는이 문맥에서 도대체 그것이 무엇인지 이해하지 못한다.

스위프트에서 vector_float3를 어떻게 복제합니까? 또는 Swift에서이 코드를 작성하려면 어떻게해야합니까?

답변

1

편집 : SIMD 유형은 스위프트로 사용할 수 있습니다


그냥 사방 SCNVector3를 사용 (예 : 믹스 기능 등) 누락 된 유틸을 구현할 수

SCNNode *car = [_vehicleNode presentationNode]; 
SCNVector3 carPos = car.position; 
SCNVector3 targetPos = SCNVector3Make(carPos.x, 30., carPos.z + 25.); 
SCNVector3 cameraPos = _cameraNode.position; 
cameraPos = SCNVector3Make(cameraPos.x * (1.0 - cameraDamping) + targetPos.x * cameraDamping, 
          cameraPos.y * (1.0 - cameraDamping) + targetPos.y * cameraDamping, 
          cameraPos.z * (1.0 - cameraDamping) + targetPos.z * cameraDamping); 
_cameraNode.position = cameraPos; 
+0

당신은 저를 줄 수 예를 들어? 믹스 기능을 사용할 수 있습니다. – Johnston