Respuesta :
Points in a two-dimensional space nearest to each other. This program finds two points in a three-dimensional space nearest to each other.
Explanation:
- A two-dimensional array is used to represent the points.
- The following is tested below : Double[][] points = {{-1, 0, 3}, {-1, -1, -1}, {4, 1, 1}, * * {2, 0.5, 9}, {3.5, 2, -1}, {3, 1.5, 3}, {-1.5, 4, 2}, * * {5.5, 4, -0.5}};
- The formula for computing the distance between two points (x1, y1, z1) and * * (x2, y2, z2) is √(x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2.
public class Exercise_08_07 {
public static void main(String[] args) {
double[][] points = {{-1, 0, 3}, {-1, -1, -1}, {4, 1, 1},
{2, 0.5, 9}, {3.5, 2, -1}, {3, 1.5, 3}, {-1.5, 4, 2},
{5.5, 4, -0.5}};
int p1 = 0, p2 = 1, p3 = 3; // Initial two points
double shortestDistance = distance(points[p1][0], points[p1][1], points[p1][2],
points[p2][0], points[p2][p1], points[p3][p2]); // Initialize shortest Distance
for (int i = 0; i < points.length; i++) {
for (int j = i + 1; j < points.length; j++) {
double distance = distance(points[i][0], points[i][1], points[i][2],
points[j][0], points[j][1], points[j][2]); // Find distance
if (shortestDistance > distance) {
p1 = i; // Update p1
p2 = j; // Update p2
shortestDistance = distance; // Update shortestDistance
}
}
}
System.out.println("The closest two points are " +
"(" + points[p1][0] + ", " + points[p1][1] + ") and (" +
points[p2][0] + ", " + points[p2][1] + ")");
}
public static double distance(
double x1, double y1, double z1, double x2, double y2, double z2) {
return Math.sqrt(Math.pow(x2 - x1, 2) +
Math.pow(y2 - y1, 2) + Math.pow(y2 - y1, 2));
}
}