cs_Kite37
Messages postés242Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention17 janvier 2018
-
21 mai 2009 à 17:31
cs_Kite37
Messages postés242Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention17 janvier 2018
-
24 mai 2009 à 14:00
Bonjour,
Dans le cadre de développement d'un mini jeu, je doit faire régulièrement des vérifications de collisions entre des cercles ou des points et des segments.
La détection entre un segment et un cercle marche très bien avec le code si dessous (qui est une application du théorème d'al kaishi) mais dès que je veut mettre un rayon de 0 en paramètre pour détecter un point (par exemple un click) cela ne marche pas.
A défaut de trouver le correctif rendant ce morceau de code viable pour les cercles et les points, quelqu'un peut-il poster une méthode simple et efficace qui permet de vérifier si un point est bien dans un segment?
(j'ai essayé d'autre méthode qui utilise les principes de colinéarité de vecteur, etc, mais ça ne veut pas marcher non plus, à n'y rien comprendre).
Voici mon code :
public bool collideCercle(int rayon, Vector2 centre)
{
for (int i = 0; i < nombreNoeuds; i++)
{
if (Math.Abs(noeuds[i].X - centre.X) <= rayon && Math.Abs(noeuds[i].Y - centre.Y) <= rayon)
return true;
cs_GG29
Messages postés326Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention 8 février 201117 22 mai 2009 à 14:55
Pour détecter si un point est sur un segment il suffit de calculer la distance entre le point A du segment et le point P ainsi que la distance entre le point P et le point B. Si la somme des 2 distances vaut la longueur du segment AB alors le point est sur le segment.
A P B
+-----------+----------------+
<-----------><--------------->
cs_Kite37
Messages postés242Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention17 janvier 2018 24 mai 2009 à 14:00
Bonjour,
J'avais aussi testé cette méthode qui marchait plutôt bien, mais certains points ne passaient pas, sans savoir pourquoi ...
J'ai testé la méthode que vous avez posté, la vérification de colinéarité, la méthode d'Al Kashi et d'autres, mais dans tous les cas il y avait des imprécisions plus ou moindre ... sans pour autant trouver d'où elles venaient =S.
En tout cas merci d'avoir pris le temps de m'aider, je vais continuer à faire des tests d'ici peu ^^
Cordialement
KiTe.
_____________________________________
La connaissance est le plus précieux des trésors.