我最近被要求实现两个代表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 + ")";
}
}