Отображение Рейса данных траектории с помощью Рейса Instruments и Рейса Animation

В этом примере показано, как визуализировать траектории рейса в окне UI Figure с помощью компонентов рейса. В этом примере вы создадите и сконфигурируете стандартные полетные приборы в сочетании с объектом 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();

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

Создайте окно 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 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];