繁体   English   中英

给定空间中的一组点,请从集合中确定与空间中另一个点最接近的点(不在集合中)

[英]Given a set of points in space, determine that point from the set that is the closest to another point in space (that's not in the set)

最近有人要求我实现代表Point2D点和Point3D点的两个类。 距离和其他方法都可以正常工作,但是只剩下一个需要实现,我无法弄清楚该算法。 像这样说:

“给出空间中的一组点,从集合中确定最接近空间中另一个点(不在集合中)的那个点”

下面是两个类。 有人可以帮我解决最后需要的算法吗?

    public class Point2D {
    protected double x;
    protected double y;

    public Point2D() { }

    public Point2D(double x, double y)
    {
        this.x = x;
        this.y = y;
    }

    public double getX() { return x; }
    public void setX(double x) { this.x = x; }
    public double getY() { return y; }
    public void setY(double y) { this.y = y; }

    public double Point2DDistance(Point2D punct)
    {
        double px = this.x - punct.x;
        double py = this.y - punct.y;

        return Math.sqrt((px * px) + (py * py));
    }

    public String toString() {
        return "(" + x + ", " + y + ")";
    } 
}

public class Point3D extends Point2D {
    private double z;

    public Point3D() { }

    public Point3D(double x, double y, double z)
    {
        super(x, y);
        this.z = z;
    }

    public double getZ() { return z; }
    public void setZ(double z) { this.z = z; }

    public double Point3DDistance(Point3D punct)
    {
        double pz = this.z - punct.z;

        return this.Point2DDistance(punct) + Math.sqrt(pz * pz);
    }

    public String toString() {
        return "(" + this.x + ", " + this.y + ", " + this.z + ")";
    }
}

遍历各点。

对于每个点

  • 如果这是第一个点,则设置min_distance =该点到未设置点P的距离,然后将此点复制到closestP ,然后

  • 否则,如果这一点的为P距离小于min_distance ,集min_distance这一点的距离,并复制此点closestP

现在, closestP保持最近的点, min_distance保持距P的距离。

欢呼!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM