Ir ao conteúdo

Posts recomendados

Postado

Estou tendo dificuldades com a logica para um objeto manter distancia de outro objeto em um plano cartesiano

Basicamente os Objetos tem a propriedade Position(X, Y) que representam a posição deles. O objB sempre vai andar em direção ao objA, a minha duvida é como posso calcular a posição que o objA deve se mover para se afastar do objB como mostrado na imagem
 

Diagrama sem nome.drawio.png

  • Curtir 1
Postado

@Arkcanjou Você pode aplicar as relações de um triângulo retângulo para mover o objeto de acordo com a distância e ângulo que o outro se aproxima, p.ex,

 

triang.png.a40a3ab8a74a77f1583616e96385e93c.png

 

A distância é a hipotenusa e o cálculo: distância = √[(Ax - Bx)² + (Ay - By)²]. Se fizer uma função para isso pode usar nos catetos também,

hipotenusa = distancia(Ax, Ay, Bx, By);
oposto = distancia(Ax, Ay, Ax, By);
adjacente = distancia(Ax, By, Bx, By);

 

Aí é só testar a distância (você também pode somar o raio já que a distância é medida entre os centros). Supondo que queira mover o objeto quando for 10 unidades no ângulo que o outro se aproxima, você pode incrementar a posição desta forma,

 

if (hipotenusa < 10) {
    if (Ax > Bx) {
        Bx -= adjacente / hipotenusa;
    }else{
        Bx += adjacente / hipotenusa;
    }

    if (Ay > By) {
        By -= oposto / hipotenusa;
    }else{
        By += oposto / hipotenusa;
    }
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!