He estado intentando crear el modelo de un dron por diversión y al calcular la dinámica lineal necesito averiguar la componente Z del vector de empuje.
Básicamente, en el espacio 3D el vector de empuje es siempre perpendicular a mi dron, de ahí que su ángulo y por tanto la componente z cambie con el cabeceo y el alabeo del dron. El cabeceo es el ángulo sobre el eje x y el alabeo es el ángulo sobre el eje y con $ 0$ siendo los grados el vector que apunta hacia arriba.
También conozco la magnitud total del vector de empuje, básicamente el empuje total generado por mi dron. A partir de ahí puedo obtener fácilmente las componentes de los vectores de empuje en las direcciones x e y multiplicando la magnitud del vector por, respectivamente, sin(roll) y sin(pitch).
Lo que he estado haciendo hasta ahora es utilizar la magnitud para escribir eso: $$M^2=X^2+Y^2+Z^2$$ siendo M la magnitud y X, Y Z las componentes del vector de empuje. A partir de esto reescribí,
$$Z=\sqrt{M^2-X^2-Y^2}$$
De nuevo aquí: $$X=sin(roll)*M$$ y $$Y=sin(pitch)*M$$ con el balanceo el ángulo sobre el eje Y y el cabeceo el ángulo sobre el eje X.
El problema es que esto falla en muchos casos ya que $M^2-X^2-Y^2$ se convierte en negativo. Estoy seguro de que he hecho algo básico bastante mal aquí, pero no me entra en la cabeza, agradecería mucho su ayuda si alguien sabe lo que estoy haciendo mal.
Gracias.