Maison >Java >javaDidacticiel >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 !
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
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
É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.
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.
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.
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"); } } }
Circle 1 and 2 intersect each other
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.
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"); } } }
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!