public class PlaneDistanceCalculator {
public static double calculateDistance(int[] coordinates) {
// 将输入的坐标数据拆分为点A、B、C和P的坐标
int[] pointA = {coordinates[0], coordinates[1], coordinates[2]};
int[] pointB = {coordinates[3], coordinates[4], coordinates[5]};
int[] pointC = {coordinates[6], coordinates[7], coordinates[8]};
int[] pointP = {coordinates[9], coordinates[10], coordinates[11]};
// 计算平面的法向量
int[] vectorAB = getVector(pointA, pointB);
int[] vectorAC = getVector(pointA, pointC);
int[] normalVector = crossProduct(vectorAB, vectorAC);
// 计算点P到平面的距离
double distance = calculateDistanceToPlane(pointP, pointA, normalVector);
return Math.floor(distance);
}
// 计算两个向量的叉乘
private static int[] crossProduct(int[] vector1, int[] vector2) {
int[] result = new int[3];
result[0] = vector1[1] * vector2[2] - vector1[2] * vector2[1];
result[1] = vector1[2] * vector2[0] - vector1[0] * vector2[2];
result[2] = vector1[0] * vector2[1] - vector1[1] * vector2[0];
return result;
}
// 计算两个点构成的向量
private static int[] getVector(int[] point1, int[] point2) {
int[] vector = new int[3];
vector[0] = point2[0] - point1[0];
vector[1] = point2[1] - point1[1];
vector[2] = point2[2] - point1[2];
return vector;
}
// 计算点到平面的距离
private static double calculateDistanceToPlane(int[] point, int[] planePoint, int[] normalVector) {
double numerator = Math.abs((point[0] - planePoint[0]) * normalVector[0] +
(point[1] - planePoint[1]) * normalVector[1] +
(point[2] - planePoint[2]) * normalVector[2]);
double denominator = Math.sqrt(Math.pow(normalVector[0], 2) +
Math.pow(normalVector[1], 2) +
Math.pow(normalVector[2], 2));
return numerator / denominator;
}
public static void main(String[] args) {
int[] coordinates = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
double distance = calculateDistance(coordinates);
System.out.println("Distance from point P to plane ABC: " + distance);
}
}
第三题gpt
最新推荐文章于 2025-06-05 23:34:27 发布