Отобразите данные о траектории рейса Используя инструменты рейса и анимацию рейса

Этот пример показывает, как визуализировать траектории рейса в окне UI Figure с помощью инструментальных компонентов рейса. В этом примере вы создадите и сконфигурируете стандартные инструменты рейса в сочетании с Аэро. Объект Animation.

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

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

load simdata

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

Чтобы отобразить траектории рейса, сохраненные в данных о траектории рейса, создайте Аэро. Объект Animation. Самолет, используемый в этом примере, является команчами Piper PA24-250.

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();

Создайте инструменты рейса

Создайте окно UI Figure, чтобы содержать инструменты рейса.

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:

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];