Projeto

Geral

Perfil

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)