如何在一个点上找到差异?

时间:2014-01-29 01:29:36

标签: java point

所以我最近在课堂上介绍了Points。现在我试图找到X的差异,然后找出Y的差异然后将它们加在一起。我很迷茫,无法找到正确的答案。有什么选择吗?

只是提醒一下这是使用Point类。

更好的说法我不理解我在AP计算机科学课上教过的Point课程。不是我不明白如何减去x2-x1。我将使用什么命令来完成此操作,因为在输入x2-x1时我仍然会遇到错误。

Heres是我应该做的:  “在我们的例子中,曼哈顿距离是坐标差异的绝对值的总和;换句话说,x的差异加上点之间y的差异。” 老师准确的话。

2 个答案:

答案 0 :(得分:2)

两个X点的差异?如果是这样,你会做X1-X2 ......和Y点相同...... Y1-Y2。

为确保差异为正,您可以

  

Math.abs(p.X1-p.X2)

...同样

  

Math.abs(p.Y1-p.Y2)

然后将它们加在一起......

  

Math.abs(p.X1-p.X2)+ Math.abs(p.Y1-p.Y2)

在您澄清之后......我已经修改了我的答案

public int manhattanDistance(Point other){ //not sure why return an int...I think returning a double makes more sense..
    int xdist = Math.abs(this.x-other.x);
    int ydist = Math.abs(this.y-other.y);
    return (int)xdist+ydist; //cast to int because you must return int

}

或更少的代码版本......

    public int manhattanDistance(Point other){
    return (int)Math.abs(this.x-other.x) + Math.abs(this.y-other.y);     
}

答案 1 :(得分:1)

两点之间的距离(直线)可以计算为:

   ___________________________
  /           2              2
 / (p2x - p1x)  + (p2y - p1y)
v

例如,经典的3-4-5三角形:

    4
  +---*
  |  /
3 | / 5
  |/
  *

斜边(5)可以计算为3 * 3 + 4 * 4的平方根。

使用Java中的两个Point对象的一种方法是:

dist = (point2.x - point1.x) * (point2.x - point1.x)
     + (point2.y - point1.y) * (point2.y - point1.y);

虽然您也可以使用Math.pow(something,2)代替乘法。


另一方面,如果你想找到曼哈顿距离(现在通过添加到问题中的额外信息看起来很明显),你可以使用类似的东西:

mdist = Math.abs (point2.x - point1.x) + Math.abs (point2.y - point1.y);

这可以解决X差异(可能是负数),然后取绝对值以强制它为正。然后它对Y差异做同样的事情并将它们加在一起。