Tienes que hacer algunos cálculos más para deshacerte de la compensación del dispositivo. El campo de la Tierra suele ser de aproximadamente 0,3 a 0,6 gauss, y no es paralelo a la superficie de la Tierra, dependiendo de su ubicación. Como el desplazamiento del dispositivo suele ser de +/- 1 gauss, su primer desafío es determinar el desplazamiento. Puedes hacer esto girando el dispositivo. Si tiene el dispositivo en una superficie plana libre de acero o hierro, tome una lectura y gírelo exactamente 180 grados, las primeras lecturas de x e y tendrán el vector de campo de la tierra más el desplazamiento, y la segunda será el negativo de La primera lectura con el offset todavía presente. Al restar los dos, obtienes dos veces el campo de la Tierra (el desplazamiento se cancela), y puedes hacer los cálculos que describiste. Si agrega los dos, tendrá dos veces el desplazamiento del dispositivo para los vectores x e y. Estas compensaciones se deben restar de las lecturas sin procesar antes de hacer los cálculos matemáticos como usted sugiere. Si no tiene una superficie plana y no desea tener que rotar exactamente 180 grados, puede aprovechar el hecho de que la suma de los cuadrados de los tres vectores de campo debe sumar un valor constante después de que el desplazamiento es eliminado, y hacer un poco de matemáticas. También necesitará una forma de medir el vector de gravedad si desea encontrar el azimut sin mantener el dispositivo perfectamente plano y normal al vector de gravedad. Aparentemente, mi iPhone utiliza este enfoque en su aplicación de brújula, pero debe inclinar / girar el teléfono para calibrar.