我想找到一个未知节点的坐标,该节点位于空间中的某个地方,该参考距离3个或更多节点(它们都具有已知坐标)的参考距离。
此问题与此处描述的Trilateration完全一样。
但是,我不了解有关“初步和最终计算”的部分(请参阅Wikipedia网站)。我没有找到P1,P2和P3的地方,所以我可以将这些方程式放在那儿?
谢谢
三边测量是找到三个球体相交区域的中心的过程。必须知道三个球体中每一个的中心点和半径。
让我们考虑您的三个示例中心点P1 [-1,1],P2 [1,1]和P3 [-1,-1]。第一个要求是P1’在原点,因此让我们通过向所有三个相加偏移向量V [1,-1]来相应地调整点:
P1' = P1 + V = [0, 0] P2' = P2 + V = [2, 0] P3' = P3 + V = [0,-2]
注意:调整后的点由’(主要)注释表示。
P2’也必须位于x轴上。在这种情况下,它已经存在,因此无需进行任何调整。
我们假设每个球体的半径为2。
现在,我们有3个方程(给定的)和3个未知数(相交点的X,Y,Z)。
解决P4’x:
x = (r1^2 - r2^2 + d^2) / 2d //(d,0) are coords of P2' x = (2^2 - 2^2 + 2^2) / 2*2 x = 1
解决P4’y:
y = (r1^2 - r3^2 + i^2 + j^2) / 2j - (i/j)x //(i,j) are coords of P3' y = (2^2 - 2^2 + 0 + -2^2) / 2*-2 - 0 y = -1
对于2D问题,请忽略z。
P4’= [1,-1]
现在,我们通过减去偏移向量V将其转换回原始坐标空间:
P4 = P4’-V = [0,0]
解点P4位于预期的原点。
本文的后半部分描述一种表示一组点的方法,其中P1不在原点或P2不在x轴上,以使它们适合那些约束。我更喜欢将其视为翻译,但是这两种方法将导致相同的解决方案。
编辑:将P2’旋转到x轴
如果将P1平移到原点后P2’不在x轴上,则必须在视图上旋转。
首先,让我们创建一些新的矢量作为示例:P1 = [2,3] P2 = [3,4] P3 = [5,2]
请记住,我们必须首先将P1转换为原点。与往常一样,偏移矢量V为-P1。在这种情况下,V = [-2,-3]
P1' = P1 + V = [2,3] + [-2,-3] = [0, 0] P2' = P2 + V = [3,4] + [-2,-3] = [1, 1] P3' = P3 + V = [5,2] + [-2,-3] = [3,-1]
要确定旋转角度,我们必须找到P2’和[1,0](x轴)之间的角度。
我们可以使用点积相等:
A dot B = ||A|| ||B|| cos(theta)
当B为[1,0]时,可以简化:点B始终只是A的X分量,而|| B || (B的大小)始终乘以1,因此可以忽略。
现在我们有Ax = || A || cos(theta),我们可以将其重新排列为最终方程:
theta = acos(Ax / ||A||)
或者在我们的情况下:
theta = acos(P2'x / ||P2'||)
我们使用|| A ||计算P2’的大小。= sqrt(Ax + Ay + Az)
||P2'|| = sqrt(1 + 1 + 0) = sqrt(2)
插入我们可以解决theta
theta = acos(1 / sqrt(2)) = 45 degrees
现在,让我们使用旋转矩阵将场景旋转-45度。由于P2’y为正,并且旋转矩阵逆时针旋转,因此我们将使用负旋转将P2与x轴对齐(如果P2’y为负,则不要取反theta)。
R(theta) = [cos(theta) -sin(theta)] [sin(theta) cos(theta)] R(-45) = [cos(-45) -sin(-45)] [sin(-45) cos(-45)]
我们将使用双质数符号’‘来表示已平移和旋转的向量。
P1'' = [0,0] (no need to calculate this one) P2'' = [1 cos(-45) - 1 sin(-45)] = [sqrt(2)] = [1.414] [1 sin(-45) + 1 cos(-45)] = [0] = [0] P3'' = [3 cos(-45) - (-1) sin(-45)] = [sqrt(2)] = [ 1.414] [3 sin(-45) + (-1) cos(-45)] = [-2*sqrt(2)] = [-2.828]
现在您可以使用P1’‘,P2’‘和P3’‘求解P4’‘。将反向旋转应用于P4’‘以获取P4’,然后反向转换以获取P4,即您的中心点。
要撤消旋转,请将P4’‘乘以R(-theta),在这种情况下为R(45)。要撤消转换,请减去偏移向量V,该偏移向量V与添加P1相同(假定您最初使用-P1作为您的V)。