1
resposta

Utilizando calculo da hipotenusa

Gostaria de saber se existe alguma formula para calcular direto o valor da hipotenusa ou se é necessario criar o calculo como feito no meu código.

<canvas width="600" height="400"></canvas>
<meta charset="UTF-8">
<script>

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

    var raio = 10;

    function desenhaCirculo(x, y, raio, cor) {

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }

    desenhaCirculo(300,200, raio + 20, 'red'); // maior círculo
    desenhaCirculo(300,200, raio + 10, 'white');
    desenhaCirculo(300,200, raio, 'red'); // menor circulo

    function dispara(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        var distanciaX =Math.abs(x-300);
        var distanciaY = Math.abs(y-200);
        var distanciaHipotenusa =  Math.sqrt((distanciaX*distanciaX)+(distanciaY*distanciaY));
        if(distanciaHipotenusa <=10){
            alert("Você acertou");
        }else{
            alert("Você errou");
        }
       // lógica de acerto?
    }

    tela.onclick = dispara;

</script>
1 resposta

Coé, Kevin! Outra solução possível seria fazer a comparação com o raio por seno e cosseno, mas ainda não sei usar bem as funções matemáticas do JS. O Lucas, chegou a implementar este mesmo cálculo que o seu, mas sem criar as variáveis que você criou. Baseado no comentário dele em uma postagem, adotei a solução encapsulando mais as "constantes soltas" do código original, vc pode verificar meu código aqui.

Se tu chegar a conferir meu código e tiver qualquer dúvida, só trazer pra cá, que tento esclarecer!

Abraço e bons estudos!