3 Commits

Author SHA1 Message Date
c096758b32 update Ligne.java 2026-02-10 15:30:09 +01:00
ff992b1d50 modif 1: Collision cercle-ligne 2026-02-10 15:23:17 +01:00
570adb8ad3 Add MAJ 2026-02-10 14:14:30 +01:00

View File

@@ -97,12 +97,13 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
}
//--------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
// Méthode permettant de vérifier si la ligne est à l'intérieur du cercle
// Principe: On a le rayon du cercle qui ne varie pas ainsi que le segment courant
// On compare la distance centre cercle-segCourant à celle du rayon
// Si c'est supérieur, la ligne n'est pas dans le cercle
// Sinon la ligne est dans le cercle
// Principe: On a le rayon du cercle qui ne varie pas
// On parcourt tous les points du segment courant
// Et on calcule la distance entre chacun de ces points et le centre du cercle
// Si la distance est supérieure au rayon du cercle, alors le point n'est pas dans le cercle
// Sinon le segment courant est dans le cercle
// Remarque: On a définit la position du cercle grâce à son centre
// Autrement dit, les coordonnées du centre du cercle sont la position du cercle
// Raison pour laquelle au début la ligne est toujours dans le cercle
@@ -110,7 +111,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
// Formule de la distance : d = sqrt( (x2-x1)^2 + (y2-y1)^2 )
// !!! Attention: il faut vérifier si le segment courant existe avant de faire les calculs
// Sinon l'écran rique de se figer à cause d'un nullPointerException
//--------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
public boolean estDansCercle(Cercle c){
boolean dansCercle = false;
// Si aucun segment courant n'a encore été déterminé (peut arriver
@@ -134,15 +135,21 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
if (this.SegCourant == null) {
return false;
}
double yCercle = c.getY();
double distance = Math.sqrt(Math.pow((xCercle - this.SegCourant.x), 2) + Math.pow((yCercle - this.SegCourant.y), 2));
for(int i = 0; i <= 50; i++){
double xPoint = this.SegCourant.x + (i/50.0)*this.SegCourant.xLong;
double yPoint = this.SegCourant.y + (i/50.0)*this.SegCourant.yLong;
double distance = Math.sqrt(Math.pow((xCercle - xPoint), 2) + Math.pow((yCercle - yPoint), 2));
if(distance <= c.getRayon()){
// Le point i du segment courant est dans le cercle, on peut continuer à vérifier les autres points du segment
this.SegCourant.setCouleur(Color.GREEN);
dansCercle = true;
}else{
// On peut s'arrêter dès qu'on trouve un point hors du cercle, car le segment courant n'est plus dans le cercle
this.SegCourant.setCouleur(Color.RED);
dansCercle = false;
break;
}
}
return dansCercle;
}