Нахождение расстояния между двумя точками на плоскости, заданного декартовыми координатами

#java #distance #points #plane #cartesian-coordinates

#ява #расстояние #Очки #самолет #декартовы координаты #java

Вопрос:

Я знаю, какова формула для определения расстояния, но я не понимаю, почему моя программа не работает? Это мой код:

 public class Test {
    public static void main(String[] args) {
      double res = dist(0.0, 0.0, 4.0, 4.0);
      System.out.println(res);
    }
    private static double dist(double x1, double y1, double x2, double y2) {
         return Math.sqrt((x2-x1)*(x2-x1)-(y2-y1)*(y2-y1));
    }
}
  

И вместо того, чтобы получить 4.0 в результате, я получаю 0.0?! Кто-нибудь может объяснить мне, почему?

Комментарии:

1. Математика.sqrt((4)*(4)-(4)*(4)) = 0.0

Ответ №1:

В вашей функции dist есть ошибка. Расстояние должно быть квадратным корнем из суммы квадратов, а не разницей. Измените его на следующее.

 return Math.sqrt((x2-x1)*(x2-x1) (y2-y1)*(y2-y1));
  

Также ваш результат должен быть 4 * sqrt (2), а не 4.0.

Ответ №2:

Расстояние составляет около 5.656854 , а не 4. Попробуйте Math.sqrt((x2-x1)*(x2-x1) (y2-y1)*(y2-y1)) . Формула имеет вид a^2 b^2=c^2 (a в квадрате b в квадрате = c в квадрате), поэтому вам нужно использовать , а не - . Это изменение заставит его работать. В Math.sqrt() противном случае вы передаете отрицательное число.