1. 程式人生 > 其它 >判斷兩個圓是否重疊

判斷兩個圓是否重疊

圓心之間的距離和 |r1-r2|及(r1+r2)之間比較

import java.util.*;
import javax.swing.*;  
  class Main {
    public static void main(String[] args){
      Scanner input = new Scanner(System.in);
      System.out.print("Enter circle1's center x-, y-coordinates, and radius: ");
      double centerOfCircle1x = input.nextDouble();
      double centerOfCircle1y = input.nextDouble();
      double radiusOfCircle1 = input.nextDouble();

      System.out.print("Enter circle2's center x-, y-coordinates, and radius: ");
      double centerOfCircle2x = input.nextDouble();
      double centerOfCircle2y = input.nextDouble();
      double radiusOfCircle2 = input.nextDouble();

      double  gapOfradius = Math.pow((radiusOfCircle1 - radiusOfCircle2) 
                                             * (radiusOfCircle1 - radiusOfCircle2), 0.5);

      double distanceOfTwoCircles = Math.pow((centerOfCircle1x - centerOfCircle2x) * 
        (centerOfCircle1x - centerOfCircle2x) + 
        (centerOfCircle1y - centerOfCircle2y) * (centerOfCircle1y - centerOfCircle2y) , 0.5);

      if(distanceOfTwoCircles <= gapOfradius && radiusOfCircle2 <= radiusOfCircle1){
        System.out.print("circle2 is inside circle1");
      }else if(distanceOfTwoCircles <= gapOfradius && radiusOfCircle1 < radiusOfCircle2){
        System.out.print("circle1 is inside circle2");
      }else if(distanceOfTwoCircles <= (radiusOfCircle1 + radiusOfCircle1)){
        System.out.print("circle1 overlaps circle2");
      }else{
        System.out.print("circle1 dose not overlap circle2");
      }
      
    }
  }