Eu tenho um retângulo 2D com posição x, y, altura e largura e um ponto posicionado aleatoriamente nas proximidades.
Existe uma maneira de verificar se esse ponto pode colidir com o retângulo se estiver mais próximo do que uma certa distância? Imagine um raio invisível fora desse ponto colidindo com o referido retângulo. Eu tenho problemas com isso simplesmente porque não é um quadrado!
collision-detection
geometry
john smith
fonte
fonte
Presumo que seu retângulo esteja alinhado ao eixo.
Você apenas precisa "prender" o ponto no retângulo e depois calcular a distância do ponto preso.
Ponto = (px, py), Retângulo = (rx, ry, rwidth, rheight) // (canto superior esquerdo, dimensões)
fonte
Você deve usar colisões círculo-retângulo para isso. Há uma pergunta semelhante no Stack Overflow.
O centro do seu círculo seria o ponto em questão e o raio seria a distância que você deseja verificar.
fonte
Se você está tentando descobrir a distância de um ponto até a aresta de um retângulo, trabalhar com cada uma das nove regiões criadas pelo retângulo pode ser a maneira mais rápida:
fonte
[Resposta modificada com base nos comentários]
Se você quiser ver se o ponto está dentro, por exemplo, 10 unidades, se o retângulo cinza na imagem abaixo, verifique se o ponto está em qualquer um dos
Essa abordagem é um pouco deselegante. Um método semelhante que evita a necessidade de testar todos os 4 cantos usando simetria de retângulo está documentado aqui no stackoverflow
fonte
Você pode usar algo como isto:
fonte