SceneKit fügt 2 Euler-Winkel zusammenIOS

Programmierung für iOS
Guest
 SceneKit fügt 2 Euler-Winkel zusammen

Post by Guest »

Ich muss zwei Euler-Winkel addieren.
Ich habe die Euler-Winkel in eine Rotationsmatrix umgewandelt und sie dann miteinander multipliziert.
Am Ende musste ich mich jedoch auf einen Dummy-SCNNode verlassen, um die endgültigen Euler-Winkel aus der Rotationsmatrix zu erhalten, was sich etwas hackig anfühlt.
Ich habe diesen Code:

Code: Select all

import SceneKit
import Spatial

// A helper function
func eulerToRotation(eulerAngles: SCNVector3) -> SCNVector4 {
let rotation = Rotation3D(eulerAngles: .init(angles: [eulerAngles.x, eulerAngles.y, eulerAngles.z], order: .xyz))
return SCNVector4(
simd_double4(rotation.axis.vector, rotation.angle.radians)
)}

func addEulerAngles(e1: SCNVector3, e2: SCNVector3) -> SCNVector3 {
let r1 = eulerToRotation(eulerAngles: e1), r2 = eulerToRotation(eulerAngles: e2)
let m1 = SCNMatrix4MakeRotation(r1.w, r1.x, r1.y, r1.z), m2 = SCNMatrix4MakeRotation(r2.w, r2.x, r2.y, r2.z)
let m = SCNMatrix4Mult(m1, m2)

// Hacky here
let node = SCNNode()
node.transform = m
return node.eulerAngles
}

Gibt es eine bessere Möglichkeit, die beiden Euler-Winkel zu addieren, ohne diesen Dummy-SCNNode zu verwenden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post