需求是这样的, 已知空间中的某点 与其他3个点的距离,三个点的坐标也已经知道的, 求这个未知点的坐标。
求解过程:
第一步是先建立坐标方程;
- // ( x1-px ) * ( x1-px ) + ( y1-py ) * ( y1-py ) + ( z1-pz ) * ( z1-pz ) =L1*L1
- // ( x2-px ) * ( x2-px ) + ( y2-py ) * ( y2-py ) + ( z2-pz ) * ( z2-pz ) =L2*L2
- // ( x3-px ) * ( x3-px ) + ( y3-py ) * ( y3-py ) + ( z3-pz ) * ( z3-pz ) =L3*L3
之后通过代码求解这个3元2次方程即可;
大致步骤如下:
可以通过面的等式展开, 然后
1 // ( x1-px ) * ( x1-px ) + ( y1-py ) * ( y1-py ) + ( z1-pz ) * ( z1-pz ) =L1*L1
(2-1) // x2_1 * px+ Y2_1*py+ Z2_1*pz = L2_1;
(3-1) // x3_1 * px+ Y3_1*py+ Z3_1*pz = L3_1;
通过(2-1,3-1 )等式计算出关于 px的方程
(5) py= k1px+b1
(6) pz= k2px+b2
带入(1) 可以解的1元2次方程形如
(6)a*px*px+ b*px+c = 0 ;
计算出关于px的两个根
之后于带入(5)(6) 分别得到两组不同的解。
虽然计算思路很简单, 但是却浪费了10几张A3 的纸,好久没写这种程序了。
做完了, 客户知道答案后不要代码了,哈哈, 这个对我来说只爱好,他要不要无所谓。