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

2024-04-20

我的任务是创建主类,在其中将任意点的值初始化为 (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 ){


    }

我的班级有测试点: 包潜水权利;

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));
}

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

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) + ...
}

附:我的第一个答案:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算 3D 中两点之间的距离 的相关文章

随机推荐