java - 计算 3D 中两点之间的距离

标签 java distance getter-setter coordinate euclidean-distance

我的任务是创建主类,在其中我将任何点的值初始化为 (0,0,0) 并且能够单独访问和改变所有三个值 (x,y,z)。为此,我使用了 getter 和 setter。我的下一个任务是在我的主类(我将称之为“distanceTo”)中创建一个方法来计算两点之间的距离。

我如何着手创建方法“distanceTo”,它通过获取 x、y、z 坐标来计算两点之间的距离?我假设我的答案与 sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2) 有关,但我不知道我是怎么做到的如果直到我的第二个测试点类才定义我的点,可以在我的主类中的方法中编写它

到目前为止我只有两个点,但我正在寻找一个更通用的答案(这样如果我创建三个点 p1 p2 和 p3,我可以计算 p1 和 p2 之间的距离或 p2 和 p3 之间的距离或 p1 和 p3 之间的距离。

我的主课:

package divingrightin;

public class Point3d {

    private double xCoord;
    private double yCoord;
    private double zCoord;


    public Point3d(double x, double y, double z){
        xCoord = x;
        yCoord = y;
        zCoord = z;
    }

    public Point3d(){
        this (0,0,0);
    }

    public double getxCoord() {
        return xCoord;
    }
    public void setxCoord(double xCoord) {
        this.xCoord = xCoord;
    }
    public double getyCoord() {
        return yCoord;
    }
    public void setyCoord(double yCoord) {
        this.yCoord = yCoord;
    }
    public double getzCoord() {
        return zCoord;
    }
    public void setzCoord(double zCoord) {
        this.zCoord = zCoord;
    }

    //public double distanceTo(double xCoord, double yCoord, double zCoord ){


    }

我的课有测试点: 包 divingrightin;

public class TestPoints {

    public static void main(String[] args) {

        Point3d firstPoint = new Point3d();

        firstPoint.setxCoord(2.2);
        firstPoint.setyCoord(1);
        firstPoint.setzCoord(5);

        //System.out.println(firstPoint.getxCoord());

        Point3d secondPoint = new Point3d();

        secondPoint.setxCoord(3.5);
        secondPoint.setyCoord(22);
        secondPoint.setzCoord(20);

    }

}

最佳答案

正如@Dude 在评论中指出的那样,您应该编写一个方法:

public double distanceTo(Point3d p) {
    return Math.sqrt(Math.pow(x - p.getxCoord(), 2) + Math.pow(y - p.getyCoord(), 2) + Math.pow(z - p.getzCoord(), 2));
}

然后,如果你想获得 2 点之间的距离,你只需调用:

myPoint.distanceTo(myOtherPoint);
//or if you want to get the distance to some x, y, z coords
myPoint.distanceTo(new Point3d(x,y,z);

您甚至可以将方法设为静态并给它 2 分进行比较:

public static double getDistance(Point3d p1, Point3d p2) {
    return Math.sqrt(Math.pow(p1.getxCoord() - p2.getxCoord(), 2) + ...
}

附言我的第一个答案:)

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

相关文章:

java - Dozer 5.4 setCustomConverter 在同名但不同类型的字段之间不起作用

c# - 如果数据库触发器是邪恶的,那么在 java 或 C# 中设置属性时产生副作用是否也是邪恶的?

java - Java 中的稀疏矩阵

3d - 计算点和矩形框(最近点)之间的距离

java - 生成不带下划线的 Getter 和 setter(不是前缀/后缀)+ eclipse

java - 如何将换行符作为字符串写入文件java

java - 重构我的数组排序函数

java - java applet 的 PKI 标准

python - 一种有效计算一个标记像素与其最近的不同标记像素的距离的算法

java - 显示累计距离 GPS。转换字符串/ double