exponenta event banner

Отображение данных траектории полета с помощью приборов полета и анимации полета

В этом примере показано, как визуализировать траектории полета в окне фигуры пользовательского интерфейса с использованием компонентов летных приборов. В этом примере будут созданы и сконфигурированы стандартные летные приборы совместно с объектом Aero.Animation.

Загрузка записанных данных для траекторий полета и отображения приборов

Загрузка зарегистрированного положения самолета, положения и времени в рабочее пространство.

load simdata

Создание интерфейса анимации

Для отображения траекторий полета, сохраненных в данных траектории полета, создайте объект Aero.Animation. В этом примере используется самолет Piper PA24-250 Comanche.

h = Aero.Animation;
h.createBody('pa24-250_orange.ac','Ac3d');
h.Bodies{1}.TimeSeriesSource = simdata;
h.Camera.PositionFcn = @staticCameraPosition;
h.Figure.Position(1) = h.Figure.Position(1) + 572/2;
h.show();

Создание летных приборов

Создайте окно рисунка пользовательского интерфейса для размещения приборов полета.

fig = uifigure('Name','Flight Instruments',...
    'Position',[h.Figure.Position(1)-572 h.Figure.Position(2)+h.Figure.Position(4)-502 572 502],...
    'Color',[0.2667 0.2706 0.2784],'Resize','off');

Загрузить изображение панели в ось:

imgPanel = imread('astFlightInstrumentPanel.png');
ax = uiaxes('Parent',fig,'Visible','off','Position',[10 30 530 460],...
    'BackgroundColor',[0.2667 0.2706 0.2784]);
image(ax,imgPanel);
disableDefaultInteractivity(ax);

Создать стандартные летные приборы для навигации:

Создать высотомер:

alt = uiaeroaltimeter('Parent',fig,'Position',[369 299 144 144]);

Создать индикатор заголовка:

head = uiaeroheading('Parent',fig,'Position',[212 104 144 144]);

Создать индикатор скорости:

air = uiaeroairspeed('Parent',fig,'Position',[56 299 144 144]);

Измените пределы индикатора скорости в соответствии с возможностями Piper PA 24-250 Comanche:

air.Limits = [20 200];
air.ScaleColorLimits = [0 50;40 160;160 190;190 200];

Создать искусственный горизонт:

hor = uiaerohorizon('Parent',fig,'Position',[212 299 144 144]);

Создать индикатор скорости набора:

climb = uiaeroclimb('Parent',fig,'Position',[369 104 144 144]);

Изменить максимальную скорость набора высоты индикатора набора высоты в соответствии с возможностями самолета:

climb.MaximumRate = 4000;

Создать координатора оборота:

turn = uiaeroturn('Parent',fig,'Position',[56 104 144 144]);

Для обновления приборов полета и изображения анимации назначьте ValueChangingFcn обратный вызов astHelperFlightInstrumentsAnimation функция помощника. Затем, когда на ползунке выбрано время, летные приборы и анимационный рисунок будут обновлены в соответствии с выбранным значением времени.

sl = uislider('Parent',fig,'Limits',[simdata(1,1) simdata(end,1)],'FontColor','white');
sl.Position = [50 60 450 3];
sl.ValueChangingFcn = @(sl,event) astHelperFlightInstrumentsAnimation(fig,simdata,h,event);

Чтобы отобразить время, выбранное на ползунке, создайте компонент метки.

lbl = uilabel('Parent',fig,'Text',['Time: ' num2str(sl.Value,4) ' sec'],'FontColor','white');
lbl.Position = [230 10 90 30];