Obtención de desplazamiento de los datos del acelerómetro con Core Motion

Estoy desarrollando una aplicación de realidad aumentada que (en este momento) quiere mostrar un cubo simple en la parte superior de una superficie, y poder moverme en el espacio (tanto giratorio como desplazable) para mirar el cubo en todos los ángulos diferentes. El problema de calibrar la cámara no se aplica aquí ya que le pido al usuario que coloque el iPhone en la superficie en la que desea colocar el cubo y luego presione un botón para restablecer la actitud. Para descubrir la rotación de la cámara es muy simple con el giroscopio y Core Motion. Lo hago de esta manera:

if (referenceAttitude != nil) {
    [attitude multiplyByInverseOfAttitude:referenceAttitude];
}

CMRotationMatrix mat = attitude.rotationMatrix;

GLfloat rotMat[] = {
    mat.m11, mat.m21, mat.m31, 0,
    mat.m12, mat.m22, mat.m32, 0,
    mat.m13, mat.m23, mat.m33, 0,
    0, 0, 0, 1
};

glMultMatrixf(rotMat);

Esto funciona muy bien De todos modos, surgen más problemas cuando trato de encontrar el desplazamiento en el espacio durante una aceleración. El ejemplo de Apple Teapot con Core Motion solo agrega los valores x, y y z del vector de aceleración al vector de posición. Esto (aparte de no tener mucho sentido) tiene el resultado de devolver el objeto a la posición original después de una aceleración. (Dado que la aceleración va de positiva a negativa o viceversa). Lo hicieron así:

translation.x += userAcceleration.x;
translation.y += userAcceleration.y;
translation.z += userAcceleration.z;

¿Qué debo hacer para descubrir el desplazamiento de la aceleración en algún instante? (con diferencia horaria conocida). Mirando algunas otras respuestas, parece que tengo que integrar dos veces para obtener la velocidad de la aceleración y luego la posición de la velocidad. Pero no hay ningún ejemplo en el código, y no creo que sea realmente necesario. Además, existe el problema de que cuando el iPhone todavía está en un avión, los valores del acelerómetro no son nulos (creo que hay algo de ruido). ¿Cuánto debo filtrar esos valores? ¿Se supone que debo filtrarlos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta