Maison  >  Article  >  Java  >  Comment vérifier si deux cercles donnés sont tangents ou se coupent en Java ?

Comment vérifier si deux cercles donnés sont tangents ou se coupent en Java ?

WBOY
WBOYavant
2023-08-27 14:21:03748parcourir

Comment vérifier si deux cercles donnés sont tangents ou se coupent en Java ?

Un cercle est une forme fermée formée en traçant un point se déplaçant sur un plan tel que sa distance à un point donné soit constante. Dans cet article, nous vérifierons si deux cercles donnés se touchent ou se croisent.

Nous obtiendrons deux cercles de centre 1 soit (x1, y1) et de centre 2 soit (x2,y2) de rayons R1 et R2. Nous devons vérifier si un cercle donné entre en collision avec un autre cercle, il y a donc cinq cas possibles -

  • Le Cercle 2 est à l'intérieur du Cercle 1

  • Le Cercle 1 est à l'intérieur du Cercle 2

  • Le Cercle 1 et le Cercle 2 se croisent

  • Le Cercle 1 et le Cercle 2 se touchent

  • Le Cercle 1 et le Cercle 2 ne se chevauchent pas

Maintenant, pour vérifier la condition ci-dessus, nous allons trouver la distance entre le centre 1 et le centre 2 et la nommer « d ».

Maintenant,

  • 1. Si d

  • 2. Si d

  • 3. Si d

  • 4. Si d == R1 + R2 : Le Cercle 1 et le Cercle 2 se touchent

  • 5. Sinon, le Cercle 1 et le Cercle 2 ne se chevauchent pas

"d" peut être trouvé en utilisant la formule -

$$mathrm{d:=:sqrt((x1:–:x2)^2:+:(y1:–:y2)^2}$$

Commençons !

Montrez quelques exemples

Exemple 1

  • L'entrée donnée de "d" est -

    • Centre 1 = (9, 3), Centre 2 = (11, 1), R1 = 5, R2 = 4.

  • Après avoir trouvé la valeur de "d", le résultat sera -

    • Le Cercle 1 et le Cercle 2 se croisent

Exemple 2

  • L'entrée donnée de "d" est -

    • Centre 1 = (5, 8), Centre 2 = (9, 11), R1 = 20, R2 = 40.

  • Après avoir trouvé la valeur de "d", le résultat sera -

    • Le Cercle 1 est à l'intérieur du Cercle 2

Algorithme

  • Étape 1 - Déclarez et initialisez les variables.

  • Étape 2 - Trouvez la distance entre le centre 1 et le centre 2 du cercle.

  • Étape 3 - Vérifiez les cinq conditions de distance.

  • Étape 4 - Imprimez les résultats.

Plusieurs méthodes

Nous proposons des solutions de différentes manières.

  • En utilisant une entrée statique

  • En utilisant des méthodes définies par l'utilisateur

Regardons le programme et sa sortie un par un.

Méthode 1 : Utiliser la saisie statique

Dans cette méthode, les valeurs de Rayon 1 et Rayon 2, Centre 1 et Centre 2 seront attribuées pour trouver "d". Ensuite, sur la base de l'algorithme, nous déterminons si la ligne touche, coupe ou se trouve à l'extérieur du cercle.

Exemple

public class Main {
   //main method
   public static void main(String[] args){
      
      //declaring variables
      int x1 = 9, y1 = 3;
      int x2 = 11, y2 = 1;
      int r1 = 5, r2 = 4;
	      
      //finding d using the formula
      double d = Math.sqrt((x1 - x2) * (x1 - x2)	+ (y1 - y2) * (y1 - y2));
      if (d <= r1 - r2) {
		   //print if Circle 2 lie inside circle 1
         System.out.println("Circle 2 lie inside circle 1");
      }
      else if (d <= r2 - r1) {
         
         //print if Circle 1 lie inside 2
         System.out.println("Circle 1 lie inside 2");
      }
      else if (d < r1 + r2) {
         
         //print if Circle 1 and 2 intersect each other
         System.out.println("Circle 1 and 2 intersect each other");
      }
      else if (d == r1 + r2) {
		   
         //print if Circle 1 and 2 touch each other
         System.out.println("Circle 1 and 2 touch each other");
      } else {
		   
         //print if Circle 1 and 2 do not touch each other
         System.out.println("Circle 1 and 2 do not touch each other");
      }
   }
} 

Sortie

Circle 1 and 2 intersect each other

Méthode 2 : Utiliser la méthode définie par l'utilisateur

Dans cette méthode, les valeurs de Rayon 1 et Rayon 2, Centre 1 et Centre 2 seront attribuées pour trouver "d". Ensuite, la méthode définie par l'utilisateur est appelée en passant la valeur donnée et selon l'algorithme, nous déterminerons si les lignes droites se touchent, se coupent ou se trouvent à l'extérieur du cercle.

Exemple

public class Main {
   //main method
   public static void main(String[] args){
	   
      //declaring variables
      int x1 = 5, y1 = 8;
      int x2 = 9, y2 = 11;
      int r1 = 20, r2 = 40;
		
      //calling user defined method
      func(x1, y1, x2, y2, r1, r2);
   }
   
   //user defined method
   static void func(int x1, int y1, int x2, int y2, int r1, int r2){
	   
      //finding d using the formula
      double d = Math.sqrt((x1 - x2) * (x1 - x2)	+ (y1 - y2) * (y1 - y2));
      if (d <= r1 - r2) {
		   
         //print if Circle 2 lie inside circle 1
         System.out.println("Circle 2 lie inside circle 1");
      }
      else if (d <= r2 - r1) {
		   
         //print if Circle 1 lie inside 2
         System.out.println("Circle 1 lie inside 2");
      }
      else if (d < r1 + r2) {
		   
         //print if Circle 1 and 2 intersect each other
         System.out.println("Circle 1 and 2 intersect each other");
      }
      else if (d == r1 + r2) {
		   
         //print if Circle 1 and 2 touch each other
         System.out.println("Circle 1 and 2 touch each other");
      }
      else {
		   
         //print if Circle 1 and 2 do not touch each other
         System.out.println("Circle 1 and 2 do not touch each other");
      }
   }
} 

Sortie

Circle 1 lie inside 2

Dans cet article, nous explorons différentes façons de déterminer si deux cercles donnés se touchent ou se croisent à l'aide du langage de programmation Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer