Для начала слова благодарности Alezz'у, Avc'у и другим товарисчам за разработанные программы.
Достаточно внимательно пытался прочитать данную ветку форума, дабы найти ответ, ну мучающий меня вопрос. Увы не
нашел. У меня навязчивая идея записать траекторию полета используя механизьм UDP... Но к сожалению не нашел в инфе
по DeviceLink кодов, которые считывали бы координаты по осям координат XY (что намного усложняет процесс вычисления
траектории полета). Я пока не совсем отчаялся, и на ум пришел сначала один алгоритм вычисления.
Через равные промежутки времени (я считаю что нет смысла использовать /20 (time of day)) считываем следующие
показатели:
z = /40 (altimeter) -- "высота"
v = /30 (speedometer_indicated) -- "скорость"
a = /42 (azimuth) -- так и хочется написать "маневр" как у Покрышкина)
Сразу возникают проблемы - здесь v - не истинная скорость, а приборная.
Алгоритм итеративный, грубо говоря, координаты по XY в первой точке полагаем за ноль. Все остальные вычисляем на
основе предыдущих значений (для этого хватит школьных познаний)
dt = t2 - t1 -- разница во времени
dh = z2 - z1 -- изменения по высоте за данный промежуток времени
l = dt*v1 -- пройденное расстояние (считаем что самолет в это время двигался по прямой со скоростью v1)
lxy = sqrt(l^2 - dh^2) -- соответственно пройденное расстояние в проекции на плоскость XY
И наконец вычисляем координаты:
x2 = x1 + Cos(A)*lxy
y2 = y1 + Sin(A)*lxy
Казалось бы все просто, ан нет. Любой математик или программист знает о погрешности вычислений, и тем более какая она бывает при итеративных вычислениях.
И я не очень то уверен, что мы получим кривую, близкую к траектории полета.
Оптимальный промежуток, для запроса (RefreshRate) следует положить не более 100мс. Т.о. самолет со скоростью 600 км/ч пройдет по прямой за это время ~17м. Причем мы не учли ни скольжения, ни угловой скорости... Так что проблема еще та...
Если народ занимался подобной проблемой, или имеет некоторые полезные размышления на эту тему, очень прошу помочь советом, или пнуть меня в каком-нибудь направлении (где что прочитать, если я пропустил).