指向最接近点的平面

sim*_*man 3 matlab

我试图在最接近给定点的平面中找到一个点.我有平面的方程,它们之间的点和距离.如何在平面中找到最接近给定点的点?

我有一个带边的四面体:bcx = 0,acy = 0,abz = 0,x/a + y/b + z/c = 1(a,b,c不与Ax + By + Cz = D混合在飞机方程式中,它们将在运行脚本时输入).

function [d n]=tetradist(x,y,z,a,b,c)    
if z>0 && y>0 && x>0 && z<c && y<b && x<a && x/a+y/b+z/c<1
        d1=abs(a*b*z)/sqrt((a*b)^2);
        d2=abs(b*c*x)/sqrt((b*c)^2);
        d3=abs(a*c*y)/sqrt((a*c)^2);
        d4=abs(b*c*x+a*c*y+a*b*z-a*b*c)/sqrt((b*c)^2 + (a*c)^2 + (a*b)^2);
A = [d1 d2 d3 d4];
B = sort(A,'ascend');
d = B(1);
point=[x y z];
if d==d1
    normalv=[0 0 a*b]';
elseif d==d2
    normalv=[b*c 0 0]';
elseif d==d3
    normalv=[0 a*c 0]';
else
    normalv=[b*c a*c a*b]';
end
end
Run Code Online (Sandbox Code Playgroud)

所以现在我有最短的距离,我作为矢量的点和最近平面的法线矢量.现在我如何在所述平面中找到最接近我的点'点'的点?

提前致谢!

Chr*_*lor 5

如果平面的方程是Ax + By + Cz = D并且该点的位置是(P,Q,R)那么平面中最接近该点的位置是

(P,Q,R) + ? * (A,B,C)
Run Code Online (Sandbox Code Playgroud)

哪里

? = (D - P*A - B*Q - C*R) / (A^2 + B^2 + C^2)
Run Code Online (Sandbox Code Playgroud)

以下Matlab代码计算了这一点

function x = closestpoint(n, d, p)
# n is the vector [A,B,C] that defines the plane
# d is the distance of the plane from the origin
# p is the point  [P,Q,R]
v = (d - sum(p.*n)) / sum(n.*n);
x = p + v * n;
Run Code Online (Sandbox Code Playgroud)