java - 计算两点之间的距离

标签 java

我需要创建一个类来计算两点之间的距离。我被卡住了,我是一个完全的初学者。这是我的类(class):

package org.totalbeginner.tutorial;

public class Point {

    public double x;
    public double y;

    Point(double xcoord, double ycoord){
        this.x = xcoord;
        this.y = ycoord;
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }    
}

第二课。

package org.totalbeginner.tutorial;

public class Line {

    double x;
    double y;

    Point p1 = new Point(2.0,2.0);
    Point p2 = new Point(4.0,4.0);
    Point mp = new Point(x,y);

    public void midpoint() {
        x = (p1.getX() + p2.getX()) / 2;
        y = (p1.getY() + p2.getY()) / 2;
    }
}

我不确定如何在两个定义的点之间获取点对象(中点)。

我可以创建点对象,但我不确定如何通过位于这两个点对象之间的 midpoint() 方法返回点对象。

最佳答案

平面上两点 (x1,y1) 和 (x2,y2) 之间的距离为:

    ____________________
   /       2          2
 \/ (y2-y1)  + (x2-x1)

但是,如果您想要的只是两点的中点,您应该将中点函数更改为:

public Point midpoint (Point p1, Point p2) {
    return new Point ((p1.getX() + p2.getX()) / 2, (p1.getY() + p2.getY()) / 2);
}

这将返回一个全新的点对象,其点设置为给定两点的中间(无需关心任何其他数学)。而且,由于你的第二类是一条线,你只需要两个端点来描述它,所以我会做一些小改动。

第一个Point.java:

class Point {
    double x, y;
    Point (double xcoord, double ycoord) {
        this.x = xcoord;
        this.y = ycoord;
    }
    public double getX() { return x; }
    public double getY() { return y; }
}

然后Line.java:

public class Line {
    Point p1, p2;
    Line (Point point1, Point point2) {
        this.p1 = point1;
        this.p2 = point2;
    }
    public Point midpoint() {
        return new Point ((p1.getX()+p2.getX())/2, (p1.getY()+p2.getY())/2);
    }
    public double abstand() {
        return Math.sqrt(
            (p1.getX() - p2.getX()) *  (p1.getX() - p2.getX()) + 
            (p1.getY() - p2.getY()) *  (p1.getY() - p2.getY())
        );
    }
    static public void main (String args[]) {
        Line s = new Line (new Point(2.0, 2.0), new Point(5.0, 6.0));
        Point mp = s.midpoint();
        System.out.println ("Midpoint = (" + mp.getX() + "," + mp.getY() + ")");
        double as = s.abstand();
        System.out.println ("Length   = " + as);
    }
}

这两个文件在编译和运行时使用端点 2,25,6(经典 3/4/5 直角三角形的斜边),生成正确的:

Midpoint = (3.5,4.0)
Length   = 5.0

关于java - 计算两点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/929773/

相关文章:

java - 什么是更快的 : JDBC or JNDI?

java - 根据从 Json 解析的项目更改 listView 行背景颜色

java - 使用 xml 映射的 Hibernate 派生属性

Java ANTLR4 不匹配输入 '<EOF>' 需要 KEY

java - 我如何创建两个具有相同Columnmodel但具有不同模型的Jtable

java - 无法解释 NullPointerException

java - 使用循环在 JSF 中创建命令按钮?

java - CSV 解析以查找相似值

java - 如何将外部 jar 文件添加到 Maven Shade 插件

java - 根据对象中的变量对对象数组列表进行排序