Best Y Inverso » Histórico » Versão 7
Carla Cosenza, 23/06/2019 04:32 h
1 | 1 | Carla Cosenza | # Best Y Inverso |
---|---|---|---|
2 | |||
3 | O Best Y Inverso é responsável por achar a melhor posição para o Striker receber o passe. Ao analisar o passe, percebemos que uma boa posição tem que possuir um caminho livre do Attacker, pois é ele que irá mandar a bola, e também um caminho livre para o gol, pois é para lá que a bola irá depois. Assim, iremos analisar duas retas: uma reta que sai do Attacker e outra que sai do gol. A interseção dessas duas retas será a melhor posição para o Striker ficar esperando a bola. |
||
4 | |||
5 | ## Reta do Gol |
||
6 | |||
7 | 7 | Carla Cosenza | Para encontrar a reta do gol, foi utilizado uma estratégia parecida com a do Best Y. Primeiro escolhemos o ponto de referência do gol inimigo, que leva em conta a posição do goleiro deles, escolhendo o setor que está mais aberto. Depois analisamos cada robô inimigo, vendo qual região ele bloqueia, para assim determinar as seções onde não há inimigos. Definimos também dois ângulos limites, o superior e inferior, que são baseados no campo e na posição do Attacker. Analisando só as seções que estão entre esses ângulos limites, pegamos a maior. A reta que passa no meio dessa seção e pelo centro do gol será a reta do gol. |
8 | 2 | Carla Cosenza | |
9 | 3 | Carla Cosenza | ![Área analisada para encontrar a reta do gol] (Imagem.002.jpeg) |
10 | 2 | Carla Cosenza | |
11 | 3 | Carla Cosenza | ![Reta do gol] (Imagem.003.jpeg) |
12 | 2 | Carla Cosenza | |
13 | 5 | Carla Cosenza | No código, a implementação é feita assim: |
14 | |||
15 | 6 | Carla Cosenza | 1. Primeiro é encontrado o ângulo do Attacker. Esse será um dos ângulos limites. |
16 | 2. Depois são calculados os ângulos de cada robô inimigo. Caso o robô esteja no nosso lado do campo, ele não é considerado, logo seus valores são -5. Para os outros robôs, são calculados dois ângulos, o que inicia e o que termina o gap. |
||
17 | 3. Desse array de ângulos dos robôs inimigos é gerado um outro array só com os ângulos de início dos gaps do inimigo. O novo array criado é ordenado de menor para maior. |
||
18 | 4. Usando esse novo array, o primeiro array é ordenado pelo ângulo inicial menor |
||
19 | 5. Após isso, ele começa a fazer os cálculos dos intervalos. Ele faz isso subtraindo o valor do ângulo do inicio do inimigo do angulo do inicio do intervalo, e analisando esse tamanho. Se for maior que o theta que ele te guardado, ele calcula o novo theta e substitui. |
||
20 | 6. No final, ele faz uma última checagem do intervalo que falta, que é o final do ultimo dos inimigos e com o final do intervalo geral que está sendo analisado. |
||
21 | 5 | Carla Cosenza | |
22 | 2 | Carla Cosenza | ## Reta do Attacker |
23 | |||
24 | Para encontrar a reta do Attaker, fazemos a mesma análise. Olhamos para a posição do Attacker, e analisamos o campo a partir do ponto mais proximo da área da defesa inimiga que está na linha dos fundos até o seu canto oposto (veja a figura abaixo). Esses pontos foram escolhidos para prevenir que a posição final do attacker seja fora do campo. Depois determinamos as seções onde não há robôs inimigos e selecionamos a maior seção. A reta que passa pelo Attacker e pelo meio dessa seção será a reta do Attacker. |
||
25 | |||
26 | 3 | Carla Cosenza | ![Área analisada para encontrar a reta do Attacker] (attackerline1.001.jpeg) |
27 | 2 | Carla Cosenza | |
28 | 4 | Carla Cosenza | ![Reta do Attacker] (attackerline2.001.jpeg) |
29 | 2 | Carla Cosenza | |
30 | ## Posição Final |
||
31 | |||
32 | Assim, fazendo a interseção das duas retas, encontramos a melhor posição para o Striker ficar esperando a bola. |
||
33 | |||
34 | 3 | Carla Cosenza | ![Posição final] (Imagem.004.jpeg) |