我在3D三维空间中有一个点(x1,y1,z1)
和一行(x2,y2,z2)(x3,y3,z3)

我想找到线与点之间的最短距离。
我已经找到了数学方程式,但是我不是数学家,并且我无法理解方程式中的不同变量并将其应用于Java / Android。

我已经在这里和几乎所有地方搜索并查看了类似的问题,但是没有任何编程语言的示例。

最佳答案

在过夜学习一些空间数学之后,我终于可以将这些方程式转换为Java代码:

public static float betweenPointAndLine(float[] point, float[] lineStart, float[] lineEnd){
        float[] PointThing = new float[3];
        float[] TotalThing = new float[3];
        PointThing[0] = lineStart[0] - point[0];
        PointThing[1] = lineStart[1] - point[1];
        PointThing[2] = lineStart[2] - point[2];

        TotalThing[0] = (PointThing[1]*lineEnd[2] - PointThing[2]*lineEnd[1]);
        TotalThing[1] = -(PointThing[0]*lineEnd[2] - PointThing[2]*lineEnd[0]);
        TotalThing[2] = (PointThing[0]*lineEnd[1] - PointThing[1]*lineEnd[0]);

    float distance = (float) (Math.sqrt(TotalThing[0]*TotalThing[0] + TotalThing[1]*TotalThing[1] + TotalThing[2]*TotalThing[2]) /
                    Math.sqrt(lineEnd[0] * lineEnd[0] + lineEnd[1] * lineEnd[1] + lineEnd[2] * lineEnd[2] ));


    return distance;
}

关于java - Java代码在3D空间中查找线与点之间的距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38350768/

10-10 23:07