¿Cómo puedo obtener el vector de campo magnético, independientemente de la rotación del dispositivo?

Lo que quiero archivar es una especie de "huella magnética" de una ubicación. Utilizo el sensor MAGNETIC_FIELD y, en caso de que obtenga el3 valores para los ejes X, Y y Z (desafortunadamente no explicados).

El problema es que los valores cambian al rotar el dispositivo, por lo que supongo que los 3 ejes son relativos al dispositivo. Lo que necesitaría es compensar la rotación del dispositivo para que obtenga los mismos 3 valores, independientemente de cómo se gire el dispositivo.

Intenté multiplicar con la matriz de rotación (sé cómo obtener eso), intenté multiplicar con la matriz de inclinación y así sucesivamente, pero nada funciona. Independientemente de lo que intente, los valores cambian cuando roto el dispositivo.

Entonces, ¿alguien sabe cómo hacerlo bien? Preferiblemente con código, porque leí muchas cosas como 'bueno, entonces tendremos que compensar eso usando la matriz de rotación' pero no encontré un solo ejemplo concreto y funcional.

Respuestas a la pregunta(4)

Su respuesta a la pregunta