[英]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.