sacar rotacion rapido quitar pantalla giro control configurar como centro bloquear automatico automatica aparece acceso iphone core-motion

rotacion - no aparece el centro de control en mi iphone



iPhone: entender la rotaciĆ³n del iPhone (5)

Dado el caso de que puede vivir con movimientos delta, puede usar la operación "diferencia de cuaternión". Digamos que tiene una rotación anterior como quaternion llamado q1 y el actual q2. Luego puede calcular el delta dQ entre ellos para que q2 = q1 * dQ sea válido. Todo lo que tienes que hacer es construir el inverso de q1 (q1 ^ (- 1)) y luego obtienes:

dQ = q1 ^ (- 1) * q2

Si deviceMotionInterval es lo suficientemente alto, siempre tienes prácticos pequeños ángulos de Euler sin ninguna singularidad de 90 ° u otras cosas buenas. El posible inconveniente de esta solución podría ser una ligera deriva debido a la propagación de errores y la falta de retroalimentación de su espacio virtual. Ejemplo: si tienes tu iPhone en una mesa que muestra un cubo y luego haces una secuencia de rotaciones, es posible que encuentres un desplazamiento angular del cubo cuando vuelves a poner el teléfono en la posición inicial.

[EDITAR: Olvidó una parte] Para deshacerse del efecto de deriva, "solo" necesita una forma de expresar la posición real de su último objeto (q1) como un cuaternario, es decir, coordina en su aplicación como se muestra en la pantalla. Si usa herramientas como Unity, podría ser solo leer la propiedad apropiada de un objeto. Si no tiene fácil acceso a él, puede tener la posibilidad de rastrear esta posición manualmente.

Si desea leer más acerca de esto, eche un vistazo a la cartilla matemática 3D para gráficos y desarrollo de juegos, por Fletcher Dunn, Ian Parberry, página 168.

Me estoy golpeando la cabeza contra la pared tratando de entender esto. Ver la siguiente imagen.

Supongamos que tengo un iPhone apoyado en una mesa. En este momento, las lecturas de rotación a través del movimiento del núcleo son 0,0,0 para guiñada, balanceo y cabeceo (imagen A).

Luego lo giro 90 grados. Ahora está sentado en la mesa con su lado izquierdo, botón de inicio a la derecha. Ahora dice 0,0,0 (imagen B).

Ahora lo guio 180 grados. Ahora está sentado con su lado derecho sobre la mesa. Botón de inicio a la izquierda. Ahora dice 180,0,0 (imagen C).

El problema viene si lo hago ahora. Supongamos que ruedo -45 grados. Debería leer 180, -45,0, pero en su lugar estoy leyendo 180, -45,180 ??? (imagen D).

¿Porqué es eso? ¿Por qué me está dando un valor para el lanzamiento si nunca cambié eso? ¿Cómo puede afectar el tono una rotación en otros ángulos? Gracias.


El acelerómetro mide la suma de dos vectores de aceleración: la gravedad y la aceleración del usuario. La aceleración del usuario es la aceleración que el usuario imparte al dispositivo. Debido a que Core Motion puede rastrear la actitud de un dispositivo utilizando tanto el giroscopio como el acelerómetro, puede diferenciar entre la gravedad y la aceleración del usuario.

Esto podría ser útil para usted:

an-absolute-degree-measurement



Los ángulos de Euler no son tan precisos para describir la rotación arbitraria como los cuaterniones o las matrices de rotación. A menudo hay más de un conjunto de ángulos para describir una rotación y, por lo tanto, no es único.

[Editar:] Como lo afirma Harinder, el movimiento del núcleo convierte los ángulos en representación canónica, es decir, hay algunas limitaciones: no estoy seguro, pero creo que el ángulo de cabeceo está limitado a [-90; 90].

Eche un vistazo a Gimbal Lock o algunos artículos similares sobre el fenómeno.


No pude replicar los mismos resultados. Usando la aplicación de giroscopio (gratuita), informando como rollo, cabeceo, guiñada obtengo (0, 0, 0) para la posición A, luego (-90, 0, 0) para B, (-90, 0, 180) para C (lo que en realidad hace que el dispositivo mire hacia otro lado, a diferencia del diagrama), luego (-45, 0, 180) para D.

Incluso volteando eso porque pareces estar enumerando como yaw, roll, pitch, eso sigue siendo (0, 0, 0) -> (0, -90, 0) -> (180, -90, 0) -> (180, -45, 0). Agregar un rollo por -90 antes de informar haría que el tono y los ejes de orientación fueran paralelos, creando un bloqueo de cardán como lo mencionaron los tipógrafos más rápidos que yo.

El problema básico es que cualquier intento de describir la rotación en tres ejes da un orden implícito de rotaciones: es "girar todo esto alrededor de x, luego esto mucho alrededor de y, luego, esto sobre z". Cualquiera que sea el orden que elija, siempre existe la posibilidad de que la rotación alrededor del primer eje alinee los otros dos ejes. La orientación es tridimensional, por lo que se puede describir con tres números (por ejemplo, mediante el uso de unidades de cuaterniones, pero dejando el cuarto término implícito), pero no por ángulos de Euler.

EDITAR: en referencia a su comentario anterior, puede obtener movimientos delta registrando un controlador con -startDeviceMotionUpdatesToQueue: withHandler :. Recibirá una serie de CMDeviceMotions, desde la que puede ver el miembro de rotationRate.