Is there any function to convert Euler angles to quaternions in script - Printable Version +- tyFlow Forum (https://forum.tyflow.com) +-- Forum: tyFlow Discussion (https://forum.tyflow.com/forum-1.html) +--- Forum: General Discussion (https://forum.tyflow.com/forum-2.html) +--- Thread: Is there any function to convert Euler angles to quaternions in script (/thread-3597.html) |
Is there any function to convert Euler angles to quaternions in script - jom_w - 04-01-2023 Hey Guys,I've been learning the script operator recently, and I have some unity3d programming experience, but I noticed that there doesn't seem to be a function in the typflow API to convert Euler angles to quaternions.Converting from Euler angles to quaternions is a very complicated mathematical process, is there any way to do it? https://www.3dgep.com/understanding-quaternions/ RE: Is there any function to convert Euler angles to quaternions in script - jom_w - 04-02-2023 No one seems to be answering this question, I read through the article and wrote this function that outputs quaternions by entering a point3 value, I'm pasting it here in case anyone else has the same trouble. public Quat EulerToQuaternion(Point3 euler) { float yaw = euler.y * Mathf.Deg2Rad; float pitch = euler.x * Mathf.Deg2Rad; float roll = euler.z * Mathf.Deg2Rad; float cy = Mathf.Cos(yaw * 0.5f); float sy = Mathf.Sin(yaw * 0.5f); float cp = Mathf.Cos(pitch * 0.5f); float sp = Mathf.Sin(pitch * 0.5f); float cr = Mathf.Cos(roll * 0.5f); float sr = Mathf.Sin(roll * 0.5f); Quat q = new Quat(); q.w = cy * cp * cr + sy * sp * sr; q.x = cy * sp * cr + sy * cp * sr; q.y = sy * cp * cr - cy * sp * sr; q.z = cy * cp * sr - sy * sp * cr; return q; } This is an example of a call function : public void simulationStep() { for (int i = 0; i < eventParticleCount; i++) { int sInx = tf.GetSimIndex(i); float eventAge = tf.GetEventAge(sInx); tf.SetSeed(sInx,(int)GetFloat("seed")); Point3 randRot = new Point3(0,0,tf.GetRandInt(sInx,0,4)*90); tf.SetRot(sInx,EulerToQuaternion(randRot)); } } RE: Is there any function to convert Euler angles to quaternions in script - tyFlow - 04-03-2023 tyFlow doesn't have a built-in euler to quaternion function because the result is not well-defined, due to vectors not containing enough data to fully define a quaternion. That said, I guess the equivalent would be tyFlow's 'MatrixFromVector' function, which you could then derive your quaternion from (same limitation about ambiguity of result applies). Code: for (int i = 0; i < eventParticleCount; i++) //this for-loop iterates through all particles in this event |