2 Stimmen

Wie repliziere ich ein vector_float3 in Swift von Objective-C aus?

Ich versuche, diesen Code von Objective-C in Swift zu übersetzen, aber ich habe Schwierigkeiten herauszufinden, was vector_mix in diesem Kontext macht. Ich sehe, dass vector_mix in Swift verfügbar ist, aber der Typ vector_float3 nicht verfügbar ist.

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);

Es scheint, als würde es das x vom cameraPos das y vom targetPos nehmen und ein z aus dem cameraDamping machen, aber warum würde man dann überhaupt die targetPos x, y und z schreiben?

Ich weiß aus diesem dass der Typ vector_float3 im Moment in Swift nicht verfügbar ist, aber es muss einen Weg geben, etwas Ähnliches zu simulieren. Ich verstehe einfach nicht, was es in diesem Kontext ist.

Wie repliziere ich ein vector_float3 in Swift? Oder wie schreibe ich diesen Code in Swift?

1voto

mnuages Punkte 13119

bearbeiten: SIMD-Typen sind jetzt in Swift verfügbar


Sie können einfach überall SCNVector3 verwenden und die fehlenden Dienstprogramme neu implementieren (wie z.B. die Mix-Funktion)

SCNNode *auto = [_vehicleNode presentationNode];
SCNVector3 autoPos = auto.position;
SCNVector3 zielPos = SCNVector3Make(autoPos.x, 30., autoPos.z + 25.);
SCNVector3 kameraPos = _cameraNode.position;
kameraPos = SCNVector3Make(kameraPos.x * (1.0 - kameraDamping) + zielPos.x * kameraDamping,
                           kameraPos.y * (1.0 - kameraDamping) + zielPos.y * kameraDamping,
                           kameraPos.z * (1.0 - kameraDamping) + zielPos.z * kameraDamping);
_cameraNode.position = kameraPos;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X