Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

264
Visualizações
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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda