使用到三维中其他三个点的距离定位一个点



假设我们在三维中有4个点(P1、P2、P3、P4(。如果这些点的坐标是用它们到第五个点P5(r1,r2,r3,r4(的欧氏距离给出的,那么如何计算P5的坐标?

在这篇文章中,唐·热巴的答案是完美的2-D。但是如何将其扩展到三维?

这是我的二维码:

    static void localize(double[] P1, double[] P2, double[] P3, double r1, double r2, double r3)
    {
        double[] ex = normalize(difference(P2, P1));
        double i = dotProduct(ex, difference(P3, P1));
        double[] ey = normalize(difference(difference(P3, P1), scalarProduct(i, ex)));
        double d = magnitude(difference(P2, P1));
        double j = dotProduct(ey, difference(P3, P1));
        double x = ((r1*r1) - (r2*r2) + (d*d)) / (2*d);
        double y = (((r1*r1) - (r3*r3) + (i*i) + (j*j)) / (2*j)) - ((i*x) / j);
        System.out.println(x + " " + y);
    }

我想用签名重载函数

static void localize(double[] P1, double[] P2, double[] P3, double[] P4, double r1, double r2, double r3, double r4)

维基百科的三边化文章描述了答案。计算步骤为:

  1. e
  2. i=ex(P3-P1(
  3. e
  4. d="P2-P1">
  5. j=ey(P3-P1(
  6. x=(r12-r2<2>+d2(/2d
  7. y=(r12-r3<2>+i2+j2(/2j-ix/j
  8. z=±sqrt(r12-x2-y2(

您需要求解四个方程组(i=1..4,Di是到第i点的距离(

(X-Xi)^2+(Y-Yi)^2+(Z-Zi)^2=Di^2

可以求解三个方程组,并使用第四个方程组(从两个方程组中(选择合适的解。

这就是GPS的工作原理(时间延迟是指距离(。

在GPS接收机中,优化方法经常被使用,特别是当许多卫星可用并且代数解可能不稳定时。

最新更新