Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

271
Views
El código para convertir cuaterniones unitarios en coordenadas esféricas arroja un resultado incorrecto

Me encontré con esta pregunta de desbordamiento de pila titulada ¿ Conversión adecuada entre cuaterniones y coordenadas de rotación esférica? pero probando el código, el resultado no igualó mis predicciones. Mi pregunta es, ¿qué hice mal?

Necesito convertir cuaterniones (x, y, z, w) en coordenadas esféricas (1, ϑ, φ). Encontré un par de soluciones en línea, pero ninguna parece dar los valores correctos cuando lo pruebo en el código. Lo que intenté fue convertir los cuaterniones en una representación de eje-ángulo, luego calcular trigonométricamente ϑ y φ como se muestra aquí . Mi borrador de python se parece a esto:

 def quaternion_to_spherical(qx, qy, qz, qw): angle_cos = qw angle_sin = math.sqrt(1 - math.pow(angle_cos, 2)) angle = 2 * math.acos(qw) if angle_sin < 0.001: angle_sin = 1 ax = qx / angle_sin ay = qy / angle_sin az = qz / angle_sin theta = -math.asin(ay) if math.pow(ax, 2) + math.pow(az, 2) < 0.001: phi = 0 else: phi = math.atan2(ax, az) if phi < 0: phi = phi + math.pi * 2 print("Theta: " + str(theta) + "\tPhi: " + str(phi))

Sin embargo, los resultados predefinidos no coinciden del todo. Deben ser como sigue, con el resultado debajo:

 Quaternion: [0.707, 0, 0, 0.707] Result: Theta: -0.0 Phi: 1.5707963267948966 Predicted: Theta: 𝜋/2 Phi: 3𝜋/4 Quaternion: [0, 0.707, 0, 0.707] Result: Theta: -1.5707963118937354 Phi: 0 Predicted: Theta: 𝜋/2 Phi: 0 Quaternion: [0, 0, 0.707, 0.707] Result: Theta: -0.0 Phi: 0.0 Predicted: Theta: 0 Phi: 𝜋/2 or 0

¿Alguna idea de por qué estos valores son incorrectos? Según tengo entendido, no hay errores en el código. ¿Las matemáticas son incorrectas o mis predicciones son incorrectas?

Si le importa la razón por la que estoy haciendo esto, aquí viene: me gustaría aplicar matrices de rotación de 2x2 con números complejos a objetos 3D en Unity. El plan es separar las matemáticas, que se toman de la literatura sobre esferas de bloque, de las rotaciones de cuaterniones de Unity. La conversión que estoy haciendo aquí es la interfaz entre Unity y las operaciones matemáticas.

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!