Álgebra simple Para las dos partes siguientes, debe saber de qué punto proviene el usuario (excepto si el usuario está en el primer punto). Suponga que el usuario está en el punto [matemáticas] p_i (a_i, b_i) [/ matemáticas] y quiere ir al punto [matemáticas] p_ {i + 1} = (a_ {i + 1}, b_ {i + 1 }) [/ math] y estaba en el punto [math] p_ {i-1} = (a_ {i-1}, b_ {i-1}) [/ math].
Cálculo del ángulo: use el producto Dot para calcular el ángulo entre la dirección del usuario actual y la dirección a la que debe ir:
[math] angle = arccos (\ frac {L_1.L_2} {|| L_1 ||. || L_2 ||}) [/ math]
- Cómo aprender estructuras de datos usando C ++ de manera simple
- ¿Qué estructuras de datos usa MS Word para almacenar elementos del documento en la memoria?
- Java: ¿Cómo podemos verificar si un número es feliz o no mediante el uso de funciones de cadena simples y bucles sin ningún arreglo?
- Lingüística computacional: ¿Cuál es la mejor manera de encontrar coincidencias aproximadas de cadenas (duplicados difusos) entre un conjunto de N cadenas?
- ¿Existe algún algoritmo o método para identificar patrones en una secuencia de filas / eventos?
donde [matemáticas] L_1 = (a_i – a_ {i-1}, b_i-b_ {i-1}) [/ matemáticas] y [matemáticas] L_2 = (a_ {i + 1} – a_ {i}, b_ { i + 1} -b_ {i}) [/ math] y [math] || L_1 || [/ math] significa la distancia de [math] L_1 [/ math] desde el origen (o su longitud).
Tenga en cuenta que la fórmula anterior no especifica el ángulo correcto directamente, ya que este ángulo [matemático] [/ matemático] es el ángulo más pequeño entre dos líneas ([matemático] L_1 [/ matemático] y [matemático] L_2 [/ matemático]) . Por lo tanto, su ángulo real podría ser [matemático] ángulo [/ matemático] o [matemático] 180 – ángulo [/ matemático]. Estoy seguro de que encontrará una manera de saber cuándo usarlos.
Dirección de cálculo: Use el producto Cross para calcular el siguiente valor:
[matemáticas] P = (a_i – a_ {i-1}) (b_ {i + 1} – b_ {i-1}) [/ matemáticas]
[matemáticas] ~~~~ – (b_i – b_ {i-1}) (a_ {i + 1} – a_ {i-1}) [/ matemáticas]
Ahora:
- Si [matemática] P = 0 [/ matemática], el usuario debe continuar en la misma dirección o debe girar 180 grados.
- Si [matemáticas] P> 0 [/ matemáticas], el usuario debe girar a la derecha.
- Si [matemáticas] P <0 [/ matemáticas], el usuario debe girar a la izquierda.
Combina el ángulo y la dirección.