anglecmp
Compara dos ángulos y da la diferencia más corta entre ellos, con signo, entre −628 y 628: cuánto y hacia dónde girar.
Datos
- Palabra
anglecmp- Familia
- Avanzados
- Pila entera
- saca 2, pone 1
- Qué hace
- Saca dos ángulos a y b, en unidades de
.aim, y apila a − b por el camino corto: de −628 a 628. - Costo
- Comando avanzado; debugint y debugbool no cuestan
- Se ejecuta en
- dentro de un gen: en la condición (cond) y en el cuerpo (start o else)
a b anglecmp deja la diferencia a − b entre dos ángulos, pero por el camino corto: entre −628 y 628 (media vuelta para cada lado). Los ángulos van en las unidades de .aim, donde 1256 es un giro completo, y antes de compararlos se llevan a ese rango, así que 1300 y 44 son el mismo ángulo.
a b anglecmp | Resultado |
|---|---|
300 100 | 200 |
100 300 | −200 |
100 1200 | 157 (por el camino corto) |
0 628 | −628 |
El resultado positivo quiere decir que a está a la izquierda de b (sentido antihorario). Por eso destino *.aim anglecmp es exactamente lo que hay que girar hacia la izquierda con .aimsx para mirar al destino; si da negativo, el giro va para el otro lado. Este bot se orienta hacia abajo (942):
cond
start
942 *.aim anglecmp .aimsx store
stopEn el primer ciclo *.aim todavía se lee en 0, así que el bot se pasa; en el segundo ya corrige y queda mirando a 942. Para preguntar solo si ya está apuntando más o menos bien, usá el valor absoluto: 942 *.aim anglecmp abs 20 <.
angle da el ángulo hacia un punto, y es el compañero natural de anglecmp.