#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()
противном случае вы передаете отрицательное число.