我知道我可能应该在math.stackexchange中提出这个问题,但答案主要是“笔纸”类型。我需要一种有效的方法来实现,这就是我在这里问的原因。
问:给出2分A& B和线L.点和线是3D。如何在给定线L上找到与给定点A和A等距的点。乙我遵循的方法是:
找到平面P,垂直于AB线并穿过A&的中心。乙
P和L的交点就是答案。
我正在处理大型数据集(一个三维图像),并且进行上述计算涉及大量数据。乘法和除法(总计)。
那么有更好的方法吗。
工作代码会非常有用。
提前致谢。
答案 0 :(得分:1)
TL; DR。解决方案位于底部。
好的,我们说这些是我们的参数:
x 0 和 x 1 ,描述这条线。
a 和 b ,这两点。
哪里
x 0 = [x 0 ,y 0 ,z 0 < /子>]
x 1 = [x 1 ,y 1 ,z 1 < /子>]
a = [x a ,y a ,z a ]
b = [x b ,y b ,z b ]
δ = [δ x ,δ y ,δ z ] =( x 1 - x 0 )
然后我们对线的描述可以看作是参数函数:
l(λ)= x 0 +λ*( x 1 - X <子> 0 子> 强>)
因此,我们试图找到满足以下等式的λ值:
(l(λ) - a ) 2 =(l(λ) - b ) 2 < / SUP>
(这里我有点作弊,所以 x 2 = x 。 x 强> 的)
扩大我们得到的一切:
(λx 1 +(1 - λ)x 0 - x a ) 2 +
(λy 1 +(1 - λ)y 0 - y a ) 2 +
(λz 1 +(1 - λ)z 0 - z a ) 2 =
(λx 1 +(1 - λ)x 0 - x b ) 2 +
(λy 1 +(1 - λ)y 0 - y b ) 2 +
(λz 1 +(1 - λ)z 0 - z b ) 2
简化,我们得到:
(λδ x + x 0 - x a ) 2 +
(λδ y + y 0 - y a ) 2 +
(λδ z + z 0 - z a ) 2 =
(λδ x + x 0 - x b ) 2 +
(λδ y + y 0 - y b ) 2 +
(λδ z + z 0 - z b ) 2 < / p>
扩展括号并取消,我们得到:
-2δ x x a λ+(x 0 - x a ) 2 +
-2δ y y a λ+(y 0 - y a ) 2 +
-2δ z z a λ+(z 0 - z a ) 2 =
-2δ x x b λ+(x 0 - x b ) 2 +
-2δ y y b λ+(y 0 - y b ) 2 +
-2δ z z b λ+(z 0 - z b ) 2
我们可以进一步简化为一些漂亮的矢量操作:
2λδ。( x b - x a )= ( x 0 - x b ) 2 - ( x 0 - x a ) 2
使用一个独特的解决方案重新排列以获得λ中的线性方程非常简单。
答案 1 :(得分:1)
如果线L由参数矢量方程
描述P=C+t*D
(其中C是一些基点,D是方向矢量,t是参数)
那么点P与给定点A和A的距离是等距的。 B,当从P到A-B区段中间的向量垂直于AB向量。因此,这些向量的标量积为零。
(B-A)*(C+t*D-(A+B)/2)=0
让&#39; S
F=B-A
G=C-(A+B)/2
然后(以坐标形式)
Fx*(Gx+t*Dx)+Fy*(Gy+t*Dy)+Fz*(Gz+t*Dz)=0
t*(Dx*Fx+Fy*Dy+Fz*Dz)=-(Fx*Gx+Fy*Gy+Fz*Gz)
t=-(Fx*Gx+Fy*Gy+Fz*Gz)/(Dx*Fx+Fy*Dy+Fz*Dz)
(Dx*Fx+Fy*Dy+Fz*Dz)=0
的情况对应于垂直线AB和L.在这种情况下,当分子(Fx*Gx+Fy*Gy+Fz*Gz)
非零时,没有解,并且如果指数为零,则存在无限的解(所有在线点是等距的)
答案 2 :(得分:0)
你可以求解方程组来得到答案。 3D中的一条线是这样的:
x = x<sub>0</sub> + t * v<sub>x</sub>
y = y<sub>0</sub> + t * v<sub>y</sub>
z = z<sub>0</sub> + t * v<sub>z</sub>
让我们来表示我们正在搜索的P
点。现在我们有:
(P x - A x ) 2 +(P y - A y < / sub>) 2 +(P z - A z ) 2 =(P x < / sub> - B x ) 2 + (P y - B y ) 2 +(P z - B z ) 2
请注意,虽然所有这些方程似乎都是四次方,但是P x 的平方我们会被划伤,因为它出现在等式的两边。现在使用这个方程组和上面的方程来找到三个变量P x ,P y 和P z 。