• Как найти вектор сигнала в плоскости?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Похожую задачу решает GPS (если забить на всякие физические эффекты).

    У вас будет 3 переменные - координаты источника сигнала (x, y) и время отправки сигнала (t).
    Вам даны координаты трех точек (x_i, y_i, i=0..2), три времени получения сигнала (t_1, t_2, t_3) и скорость сигнала (v).

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

    Уравнения, что сигнал проходит заданное расстояние за заданное время с известной скоростью:

    (x_i-x)^2+(y_i-y)^2 = ((t-t_i)*v)^2

    Можно время считать не в секундах, а в 1/v, тогда уравнения чуть упрощаются (коэффициент перед t^2 везде 1, а не v^2).

    Можно решать аналитически. Вычтите первое уравнение из двух остальных. У вас получится 2 линейных уравнения с тремя неизвестными x, y, t. Считайте, что t - это константа и решите уравнения относительно x и y (Через определители, или метод Краммера). У вас будет какая-то линейная зависимость x и у от t (большие формулы, да). Можно упростить вычисления, если cначала записать уравнения в виде A1x+B1y=C1+D1t.

    Потом подставьте эти зависимости в первое уравнение и у вас будет квадратичное уравнение на t.

    Решите его. Подставьте t в известные уравнения для x и y - и вот ваш центр (заодно вы знаете, когда был отравлен сигнал).

    Из двух значений t, одно будет в будущем (положительное), его надо будет отбросить.
    Ответ написан
    2 комментария
  • Как найти вектор сигнала в плоскости?

    hint000
    @hint000
    у админа три руки
    можно ли это сделать с какой-то угловой погрешностью? Сектор 30 градусов, 45, 60 и т.д

    Для сектора 60 градусов (из центра треугольника) даже не нужно засекать время, достаточно последовательности получения сигнала. Шесть секторов по 60 градусов, шесть последовательностей: (A,B,C), (A,C,B), (C,A,B), (C,B,A), (B,C,A), (B,A,C).
    Для точного вычисления нужно составить систему уранений и решить. На первый взгляд решаемо (нужно потратить время).
    Ответ написан
    1 комментарий