Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I want to calculate the distance between two points in Java

OK, so I've written most of a program that will allow me to determine if two circles overlap.

I have no problems whatsoever with my program aside from one issue: the program won't accept the code I've written for the distance between the two center points. I can figure out the if/else logic to tell the user what happens depending on the value of distance later, but I want to know what's wrong now. Eclipse, the program I'm coding on, is telling me that distance should be resolved to an array, but I've already told you that it's an int.

Here is my code:

package circles; import java.util.Scanner;  public class MathCircles {         // variable for the distance between the circles' centers     public static int distance;      // variable for the lengths of the radii combined     public static int radii;      public static void main(String[] args) {         // Get the x-value of the center of circle one         System.out.println("What is the x-coordinate for the center of circle one?");         Scanner keyboard = new Scanner(System.in);         int x1 = keyboard.nextInt();          //Get the y-value of the center of circle one         System.out.println("What is the y-coordinate for the center of circle one?");         Scanner keyboard1 = new Scanner(System.in);         int y1 = keyboard1.nextInt();          //Get the radius length of circle one.         System.out.println("How long is circle one's radius?");         Scanner keyboard2 = new Scanner(System.in);         int r1 = keyboard2.nextInt();          // Get the x-value of the center of circle two.         System.out.println("What is the x-coordinate for the center of circle two?");         Scanner keyboard3 = new Scanner(System.in);         int x2 = keyboard3.nextInt();          //Get the y-value of the center of circle two.         System.out.println("What is the y-coordinate for the center of circle two?");         Scanner keyboard4 = new Scanner(System.in);         int y2 = keyboard4.nextInt();          //Get the radius length of circle two.         System.out.println("How long is circle two's radius?");         Scanner keyboard5 = new Scanner(System.in);         int r2 = keyboard5.nextInt();          /*          * OK, so now I have the location of the two circles' centers,          * as well as the lengths of their radii.          * The circles are intersecting IF THE DISTANCE BETWEEN THE TWO CENTERS          * IS EQUAL TO OR LESS THAN THE COMBINED LENGTHS OF THE RADII.          * Now I need to get some math done.          */          //calculate the combined lengths of the radii          radii = r1 + r2;          //calculate the distance         distance = Math.sqrt((x1-x2)(x1-x2) + (y1-y2)(y1-y2));      }     } 
like image 835
Marwa Roshan Avatar asked Jan 21 '13 00:01

Marwa Roshan


People also ask

How do you find the Euclidean distance between two points in Java?

The Euclidean distance between (x1, y1, z1) and (x2, y2, z2) is defined as sqrt( (x1-x2)^2 + (y1-y2)^2) + (z1-z2)^2). String toString() – it returns the string representation of the point. An example would be (2.3,4.5,3.0).


1 Answers

Based on the @trashgod's comment, this is the simpliest way to calculate distance:

double distance = Math.hypot(x1-x2, y1-y2); 

From documentation of Math.hypot:

Returns: sqrt(x²+ y²) without intermediate overflow or underflow.

like image 70
Bob Avatar answered Sep 25 '22 10:09

Bob