gpt4 book ai didi

matlab - 平面中离点最近的点

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:39 25 4
gpt4 key购买 nike

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

我有一个有边的四面体: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

所以现在我有最短的距离,我的点作为向量和最近平面的法向量。现在我如何找到所述平面中最接近我的点“点”的点?

提前致谢!

最佳答案

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

(P,Q,R) + λ * (A,B,C)

在哪里

λ = (D - P*A - B*Q - C*R) / (A^2 + B^2 + C^2)

下面的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;

关于matlab - 平面中离点最近的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16458258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com