Identidades trigonométricas

Solo disponible en BuenasTareas
  • Páginas : 7 (1572 palabras )
  • Descarga(s) : 4
  • Publicado : 27 de mayo de 2010
Leer documento completo
Vista previa del texto
Tutorial de Funciones Trigonometricas en Robocode

Para ser capaz de escribir un robot inteligente en Robocode, debes usar frecuentemente algunas funciones matemáticas:

Por Ejemplo:

• ¿En que ángulo tengo que disparar para alcanzar una posición especifica (x,y)?
• ¿SI me muevo una distancia x en una dirección?, Adonde puedo llegar?
• ¿En que dirección debo moverme paraalcanzar una posición (x,y)?

Para calcular las respuestas a estas preguntas necesitamos de la trigonometría. En este documento trateremos de explicar como utilizar funciones trigonometricas para programar tu robot.

Preguntas Frecuentes:

EL Campo de Batalla

El campo de batalla en Robocode es rectangular. Cada punto tiene una coordenada x (horizontal) y una coordenada y (vertical). Lascoordenadas reflejan un par (x,y), del cual el primero es x y la segunda coordenada es y. Se debe remarcar que el cuadrante se inicia en el punto de origen (0,0) en el extremo izquierdo inferior (ver imagen) y se extiende hacia la derecha y hacia arriba con los valores de battlefield_width (ancho) y battlefield_height (alto).

[pic]

Imagen tomada de Rock 'em, sock 'emRobocode: Round 2

[pic]

Un ejemplo podría ser el punto (6,4) que esta marcado en esta imagen.

Ángulos

En Robocode encontraremos 2 tipos de ángulos que usaremos frecuentemente.
In Robocode you two types angles frequently come against:

Angulos Absolutos (Heading)

Son los ángulos con respecto a una par de coordenadas fijas. Puedes compararlas con los ejes cartesianos: Norte, Este,Sur y Oeste. Un ángulo de 0 grados tiene una dirección hacia arriba, un ángulo de 90 grados tiene una orientación hacia la derecha, etc. Los ángulos absolutos en Robocode pueden ser utilizados para determinar por ejemplo: con el método Robot.getHeading() hacia donde se dirige un robot.

Observación: En nuestros estudios aprendimos que el ángulo de 0 grados indica hacia la derecha en vez de arriba,pero en Robocode es diferente, por lo tanto las funciones seno y coseno debes ser usadas de forma diferentes de lo que estamos acostumbrados.

Angulos Relativos (Bearing)

Son los ángulos relativos a la dirección a la cual esta orientada tu robot. Estos pueden ser comparados con los términos como izquierda y derecha. Si un evento ocurre, con el método getBearing() puedes determinar desde queángulo esta ocurre, por ejemplo: escanear un robot, golpear un muro, desde que dirección nos impacto un proyectil, etc. “Bearing” de 0 grados seria a la derecha de tu robot, “bearing” de -90 seria la izquierda, “bearing” de 90 es derecha y “bearing” de 180 o -180 grados seria atrás.

La diferencia entre heading y bearing es mas transparente en el siguiente ejemplo:

[pic]

Imaginemos queel objeto A es un tanque enemigo y nos queremos dirigir hacia el, entonces por un lado podemos determinar el ángulo α que es la dirección de nuestro robot, entonces utilizaremos el método getHeading()=α, de esta forma obtenemos el ángulo absoluto de dirección de nuestro tanque, por otro lado si queremos dirigir nuestro robot al objeto A, necesitaremos el ángulo β por lo cual deberemos ejecutargetBearing()=β en el evento onscannedRobot y luego utilizamos el método: turnRight(β); o de forma completa turnRight(event.getBearing()) y nos orientaremos hacia el objeto A y si ponemos ahead(int x); nos acercaremos a la posición de A.

Grados en Radianes

Grados y Radianes

Existen muchos métodos que trabajar con ángulos. En Robocode muchas funciones utilizan grados pero en las matemáticas esmás usual trabajar con radianes. La mayoría de los métodos del API de Java (incluidos seno y coseno), utilizan radianes por esa razón deberías conocer como pasar de grados a radianes y viceversa. Las formulas son:

• Radianes= grados*(2π / 360)
• Grados= radianes*(360/2π)
Por supuesto que estos cálculos no los vamos a realizar a mano, sino que dejaremos que la PC utilice los...
tracking img