Я пытаюсь найти уравнение, которое может определять координаты x, y, z точки на расстоянии до 4 известных контрольных точек. - PullRequest
0 голосов
/ 06 мая 2020

Выходит игра под названием starbase, которая содержит собственный язык программирования. Я пытаюсь сделать систему GPS, используя как минимум 4 ориентира. В игре есть приемники и передатчики, которые определяют расстояния. По сути, у меня есть 4 известные точки с расстояниями до точки. Я знаю, что могу использовать трилатерацию, но не могу найти реального уравнения, которое можно было бы превратить в код. Если кто-то может помочь, это было бы здорово :).

Ответы [ 2 ]

1 голос
/ 06 мая 2020

У вас есть такие уравнения для квадрата расстояния:

(Ax-x)^2 + (Ay-y)^2 + (Az-z)^2 = A_Dist^2   {1}

где Ax, Ay, Az - координаты первого получателя, неизвестные x, y, z - координаты объекта, а A_Dist - расстояние от объекта pbject до приемник A. Вместе с аналогичными уравнениями для еще двух приемников у вас есть система трех уравнений с тремя неизвестными. Ключ к разгадке .

0 голосов
/ 06 мая 2020

Один из способов приблизиться к этому - начать со случайной точки p (например, вашей последней известной позиции). А затем:

  • l oop через каждую из станций
    • вычислить расстояние между p и станцией
    • если расстояние слишком велико, шаг эпсилон в сторону станции
    • если расстояние слишком мало, отойдите на эпсилон от станции
    • этот эпсилон должен быть пропорционален величине разницы
  • повторите это либо фиксированное количество раз, либо до тех пор, пока положение не перестанет сильно меняться

Такой подход позволяет использовать более 4 станций, а также некоторые ошибки измерения.

Вы можете поэкспериментировать с размером эпсилон и количеством шагов, чтобы получить достаточно хорошие результаты за несколько итераций, в зависимости от потребностей.

...