vida significa qué que ingles grados giros giro frases frase dio dar java android algorithm rotation accelerometer

java - qué - que significa la frase giro de 360 grados



Detectar algoritmo de giro de 360 ​​grados (1)

Estoy detectando con éxito 0-360 grados de rotación (balanceo) del teléfono alrededor de un eje, pero ahora estoy teniendo dificultades para diseñar un algoritmo efectivo para detectar un giro completo. Mi trabajo pero creo que no es elegante y el algoritmo tan efectivo como me gustaría es:

private boolean detectRoll; private boolean[] checkpointsR = new boolean[4]; private boolean fullRollTurn; public void detectingRoll() { setDetectRoll(true); checkpointsR[0] = true; for (int i = 1; i < 4; i++) { if (roll > 90 * i && roll < 90 * (i + 1) && checkpointsR[i - 1] == true) { checkpointsR[i] = true; } } if (areAllTrue(checkpointsR) && roll > 0 && roll < 45) { fullRollTurn = true; // reset rollCheckpoints for (int i = 1; i < 4; i++) { checkpointsR[i] = false; } } } public static boolean areAllTrue(boolean[] array) { for (boolean b : array) if (!b) return false; return true; } public void setDetectRoll(boolean detectRoll) { this.detectRoll = detectRoll; }

Cualquier ayuda sería realmente apreciada.


Bueno, tu código solo detecta los giros que resultan del aumento de la roll . En la otra dirección, es decir, un giro resultante de la caída del roll ,

if (checkpointsR[i - 1] == true) { checkpointsR[i] = true; }

nunca se disparará.

Si bien es fácil de reparar, si la única entrada de sensor que tienes es roll , el punto de control fijo siempre tendrá problemas. La mejor manera de visualizarlo es que los puntos de control son pequeños puntos rojos en un círculo, y la rotación del teléfono corresponde a una hormiga que se arrastra alrededor del borde del círculo. Supongamos que cuando la hormiga pasa un punto, se vuelve verde y que esto representa que el punto de control se establece en true . Si la hormiga comienza entre dos puntos de control A y B , puede "engañarlos" arrastrándose a través de B , todo el camino hasta A , y luego girando y dirigiéndose hacia el otro lado. Todos los puntos de control serán verdes, pero la hormiga no habrá completado un círculo completo.

La forma de resolver esto es cambiar dos cosas: en primer lugar, otorgue a los puntos de control tres estados: unvisited , en clockwise y anticlockwise . Segundo, comienza la hormiga encima de un punto de control .

Aquí están las nuevas reglas:

  • Cada punto comienza como unvisited (un punto rojo).
  • Si la hormiga pasa un punto de control en el sentido de las agujas del reloj, configure su estado en el clockwise de las clockwise del clockwise (una pequeña flecha verde que apunta hacia la derecha desde el punto)
  • Si la hormiga pasa un punto de control en el sentido contrario a las agujas del reloj, configure su estado en anticlockwise (una pequeña flecha verde apuntando en el sentido contrario al de las agujas del reloj desde el punto)
  • Se ha completado un giro si todos los puntos de control están en el clockwise las clockwise o si son todos en anticlockwise .

Esto se puede lograr con tres puntos de control y colocarse donde quieras en el círculo, siempre que el primero esté debajo de la posición inicial de la hormiga. Yo recomendaría {initial, inital + 120, initial + 240} aunque por simetría.

(El experimento mental de hormiga funciona con dos puntos de control, pero cuando tienes dos puntos de control el problema es que hay un par de regiones con un punto de control no exclusivo entre ellos, lo que confunde la detección de qué punto de control pasó realmente la hormiga cuando la hormiga va de una región a la otra)