找到平面中两点之间的距离,由笛卡尔坐标给出

时间:2014-07-02 10:50:39

标签: java distance points plane cartesian-coordinates

我知道找到距离的公式是什么,但我不明白为什么我的程序不起作用?这是我的代码:

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?!有人能解释我为什么吗?

2 个答案:

答案 0 :(得分:2)

你的dist函数有一个错误。距离应该是平方和的平方根,而不是差值。将其更改为以下内容。

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

你的结果也应该是4 * sqrt(2)而不是4.0。

答案 1 :(得分:0)

距离约为5.656854,而不是4.尝试Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))。公式为a^2+b^2=c^2(平方+ b平方= c平方),因此您需要使用+,而不是-。这一改变将使其发挥作用。否则你将负数传递给Math.sqrt()