DarwinBotsManual
Abrir la app EnglishEN

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 anglecmpResultado
300 100200
100 300−200
100 1200157 (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
stop

En 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.