В этом примере показано, как визуализировать траектории рейса в окне UI Figure с помощью инструментальных компонентов рейса. В этом примере вы создадите и сконфигурируете стандартные инструменты рейса в сочетании с Aero.Animation object.
Загрузите регистрируемое положение самолета, отношение, и время к рабочей области.
load simdata
Чтобы отобразить траектории рейса, сохраненные в данных о траектории рейса, создайте Aero.Animation object. Самолет, используемый в этом примере, является команчами 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
функция помощника. Затем когда время будет выбранным On ползунка, инструменты рейса и фигура анимации будут обновлены согласно выбранной временной стоимости.
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];