Projeto

Geral

Perfil

Best Y Inverso » Histórico » Revisão 6

Revisão 5 (Carla Cosenza, 09/09/2018 21:53 h) → Revisão 6/7 (Carla Cosenza, 09/09/2018 22:59 h)

# Best Y Inverso 

 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. 

 

 ## Reta do Gol 

 Para encontrar a reta do gol, foi utilizado uma estratégia parecida com a do Best Y. Olhando para o centro do gol, varremos o camp, a partir do Attacker e angularmente, determinando seções onde não há inimigos. A análise é feita depois do Attacker para tentar garantir que a posição do Striker não será muito perto do Attacker. Depois analisamos essas seções e pegamos a maior. A reta que passa no meio dessa seção e pelo centro do gol será a reta do gol. 

 ![Área analisada para encontrar a reta do gol] (Imagem.002.jpeg) 

 ![Reta do gol] (Imagem.003.jpeg) 

 No código, a implementação é feita assim: 

 1.    Primeiro é encontrado o ângulo do Attacker. Esse será um dos ângulos limites. 
 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.  
 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.  
 4. Usando esse novo array, o primeiro array é ordenado pelo ângulo inicial menor 
 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.  
 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.  

   

 ## Reta do Attacker 

 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. 

 ![Área analisada para encontrar a reta do Attacker] (attackerline1.001.jpeg) 

 ![Reta do Attacker] (attackerline2.001.jpeg) 

 ## Posição Final 

 Assim, fazendo a interseção das duas retas, encontramos a melhor posição para o Striker ficar esperando a bola.  

 ![Posição final] (Imagem.004.jpeg)