J'ai un rectangle 2D avec la position x, y, la hauteur et la largeur, et un point positionné au hasard à proximité.
Existe-t-il un moyen de vérifier si ce point peut entrer en collision avec le rectangle s'il est plus proche d'une certaine distance? Imaginez un rayon invisible à l'extérieur de ce point entrant en collision avec ledit rectangle. J'ai des problèmes avec ça simplement parce que ce n'est pas un carré!
collision-detection
geometry
John Smith
la source
la source
Je suppose que votre rectangle est aligné sur l'axe.
Il vous suffit de "fixer" le point dans le rectangle, puis de calculer la distance à partir du point fixé.
Point = (px, py), Rectangle = (rx, ry, rwidth, rheight) // (coin supérieur gauche, dimensions)
la source
Pour cela, vous devez utiliser des collisions cercle-rectangle. Il y a une question similaire sur Stack Overflow.
Le centre de votre cercle serait le point en question et le rayon serait la distance que vous souhaitez vérifier.
la source
Si vous essayez de déterminer la distance entre un point et le bord d'un rectangle, travailler avec chacune des neuf régions créées par le rectangle peut être le moyen le plus rapide:
la source
[Réponse modifiée sur la base des commentaires]
Si vous voulez voir si le point est à moins de 10 unités si le rectangle gris dans l'image ci-dessous, vous vérifiez si le point est dans l'un des
Cette approche est un peu inélégante. Une méthode similaire qui évite d'avoir à tester les 4 coins en utilisant la symétrie rectangle est documentée ici sur stackoverflow
la source
Vous pouvez utiliser quelque chose comme ceci:
la source