MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

Математика\Partial Differential Equations Toolbox

В.Е.Шмелев "Partial Differential Equations Toolbox. Инструментарий решения дифференциальных уравнений в частных производных":
3. Состав графического интерфейса пользователя PDE Toolbox Matlab

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

3.2. Свойства объектов axes

3.2.1. Свойства объекта axes PDEAxes

Как было сказано выше, объект axes PDEAxes - это основной объект axes фигуры PDETool (в предыдущих разделах, например, 2.6, он назывался просто "поле axes"). Этот графический объект выполняет роль поля показа геометрии расчётной области. Если в приложение PDETool не загружена PDE-модель, то свойства объекта axes PDEAxes имеют следующие значения.

ALim = [0 1]
ALimMode = auto
Эти свойства определяют диапазон изменения коэффициента прозрачности. Эти свойства поддерживаются в дескрипторной графике и GUI, начиная с версии MATLAB 6.0.

AmbientLightColor = [1 1 1]
Это свойство задаёт цвет фоновой подсветки объектов Light [15]. В данном случае - белый.

Box = on
Контур объекта axes PDEAxes отображается в виде прямоугольника [15].

CameraPosition = [0 0 19.2083]
CameraPositionMode = auto
CameraTarget = [0 0 0.5]
CameraTargetMode = auto
CameraUpVector = [0 1 0]
CameraUpVectorMode = auto
CameraViewAngle = [6.11935]
CameraViewAngleMode = auto
Эти свойства определяют параметры пространственного положения "камеры" [15] при показе изображения в поле axes.

CLim = [0 1]
CLimMode = auto
Эти свойства задают диапазон изменения цветов отображаемых подчинённых графических объектов [15].

Color = [1 1 1]
Цвет фона [15]. В данном случае - белый.

CurrentPoint = [ (2 by 3) double array]
Координаты точки, соответствующей последнему нажатию кнопки мыши в пределах данного объекта axes [15].

ColorOrder = [ (7 by 3) double array]
Порядок использования цветов при выводе множественных графиков [15]. Здесь в списке 7 цветов: синий, зелёный, красный, сине-зелёный, красно-синий, красно-зелёный, тёмно-серый.

DataAspectRatio = [1 1 1]
DataAspectRatioMode = manual
Эти свойства задают относительное масштабирование показываемого изображения вдоль осей x, y, z.

DrawMode = fast
Это свойство задаёт способ визуализации [15].

FontAngle = normal
Шрифт надписей без наклона.

FontName = Helvetica
Название шрифта надписей.

FontSize = [10]
Размер шрифта надписей.

FontUnits = points
Единицы измерения размера шрифта надписей. В данном случае - пункты (1 пункт = 1/72 дюйма).

FontWeight = normal
Толщина шрифта надписей. В данном случае - нормальная.

GridLineStyle = :
Стиль линий координатной сетки. В данном случае - пунктирные линии.

Layer = bottom
Размещение координатных осей и их маркеров. В данном случае - ниже "графика" [15].

LineStyleOrder = -
Это значение свойства означает, что все линии "графиков" - сплошные. См. также [15].

LineWidth = [0.5]
Толщина линий графиков равна 0.5 пункта.

NextPlot = replace
Не поддерживается режим отображения "множественных графиков". См. также [15].

PlotBoxAspectRatio = [3 2 1]
Относительное масштабирование поля объекта axes вдоль разных координатных осей [15].

PlotBoxAspectRatioMode = auto
Режим установки предыдущего свойства.

Projection = orthographic
В поле axes изображение показывается в ортографической (параллельной) проекции [15].

Position = [0.1 0.12 0.8 0.758519]
Положение axes PDEAxes в фигуре PDETool в нормализованных единицах.

TickLength = [0.01 0.025]
Длины меток на координатных осях [15].

TickDir = in
Направление меток - к полю графика [15].

TickDirMode = auto
Автоматический режим задания направления меток.

Title = [180]
Дескриптор объекта Text, который является заголовком объекта axes. В данном случае заголовок пустой.

Units = normalized
Единицы измерения для свойства Position [15].

View = [0 90]
Устаревшее свойство [15].

XColor = [0 0 0]
Цвет линии оси x. В данном случае - чёрный.

XDir = normal
Направление возрастания значений координат вдоль оси x. В данном случае - нормальное (слева направо).

XGrid = off
Линии координатной сетки вдоль координатной оси - не отображаются.

XLabel = [4.00037]
Дескриптор объекта Text - метки координатной оси x.

XAxisLocation = bottom
Ось x расположена ниже области графика.

XLim = [-1.5 1.5]
Пределы изменения координаты x в поле axes.

XLimMode = manual
Ручной способ задания пределов изменения координаты x в поле axes.

XScale = linear
Линейный масштаб вдоль оси x.

XTick = [ (1 by 7) double array]
Разметка координатной сетки вдоль оси x.

XTickLabel =
-1.5
-1
-0.5
0
0.5
1
1.5
Метки линий координатной сетки вдоль оси x. Значение свойства задаётся в виде матрицы символов.

XTickLabelMode = auto
Автоматический режим формирования меток линий координатной сетки вдоль оси x.

XTickMode = auto
Автоматический режим разметки координатной сетки вдоль оси x.

YColor = [0 0 0]
Цвет линии оси y. В данном случае - чёрный.

YDir = normal
Направление возрастания значений координат вдоль оси y. В данном случае - нормальное (снизу вверх).

YGrid = off
Линии координатной сетки вдоль координатной оси - не отображаются.

YLabel = [5.00037]
Дескриптор объекта Text - метки координатной оси y.

YAxisLocation = left
Ось y расположена левее области графика.

YLim = [-1 1]
Пределы изменения координаты y в поле axes.

YLimMode = manual
Ручной способ задания пределов изменения координаты y в поле axes.

YScale = linear
Линейный масштаб вдоль оси y.

YTick = [ (1 by 11) double array]
Разметка координатной сетки вдоль оси y.

YTickLabel = [ (11 by 4) char array]
Метки линий координатной сетки вдоль оси y. Значение свойства задаётся в виде матрицы символов.

YTickLabelMode = auto
Автоматический режим формирования меток линий координатной сетки вдоль оси y.

YTickMode = auto
Автоматический режим разметки координатной сетки вдоль оси y.

Далее следуют аналогичные свойства, относящиеся к оси z.
ZColor = [0 0 0]
ZDir = normal
ZGrid = off
ZLabel = [181]
ZLim = [0 1]
ZLimMode = auto
ZScale = linear
ZTick = [0 0.5 1]
ZTickLabel =
ZTickLabelMode = auto
ZTickMode = auto

BeingDeleted = off
Объект axes PDEAxes не может быть удалён вне процедуры ответного вызова.

ButtonDownFcn =
Процедура ответного вызова при отпускании (или нажатии) кнопки мыши [15].

Children = []
Подчинённых объектов (потомков) нет, т.к. PDE модель не загружена в PDETool. Следует учитывать, что на практике не все потомки бывают представлены в этом свойстве.

Clipping = on
Это свойство для объектов axes не задействовано [15].

Следующие свойства являются общими для графических объектов. Они кратко описаны выше (в подразделе 3.1).
CreateFcn =
DeleteFcn =
BusyAction = queue
HandleVisibility = callback
HitTest = on
Interruptible = on
Parent = [99.0002]
Selected = off
SelectionHighlight = on
Tag = PDEAxes
Type = axes
UIContextMenu = []
UserData = []
Visible = on

Независимо от режима работы приложения PDETool свойства XGrid, YGrid изменяются по команде Options/Grid. XLim, Ylim - по команде Options/Axes Limits. XTick, XTickLabel, Ytick, YTickLabel изменяются по команде Options/Grid Spacing. Названные здесь свойства изменяют также команды группы Options: Axes Equal, Zoom.

Свойство Children зависит от геометрии расчётной области PDE-задачи, а также от режима работы приложения PDETool. Пусть PDETool работает в режиме Draw Mode, и PDE-модель не загружена. В поле axes нарисуем прямоугольник. Тогда значением свойства Children станет массив размера (3,1), содержащий дескрипторы следующих объектов: line PDESelFrame, text PDELblSel, patch PDEMinReg. Последний из этих объектов - изображение созданного прямоугольника в виде закрашенной серым цветом области. Второй объект - надпись с именем (меткой) прямоугольника. Первый объект типа line - контур выделения геометрических объектов (в данном случае выделенным геометрическим объектом является созданный прямоугольник). Если отменить выделение прямоугольника, то значением свойства Children станет массив размера (2,1), потому что в результате отмены выделения будет уничтожен графический объект line PDESelFrame. Состав графических объектов, подчинённых axes, будет рассмотрен в одном из следующих подразделов.

3.2.2. Свойства объекта axes draw

Функционально графический объект axes draw представляет собой объединение пяти кнопок инструментальной панели, дублирующих команды меню группы Draw (см. 2.2). Свойства объекта axes draw зависят от состояния этих кнопок (одновременно может быть нажато не более одной кнопки; при нажатии любой кнопки этой группы PDETool автоматически переходит в режим Draw Mode). Пусть все кнопки отжаты. Тогда свойства объекта axes draw имеют следующие значения.

ALim = [0 1]
ALimMode = auto
AmbientLightColor = [1 1 1]
Box = on
CameraPosition = [0.5 0.5 9.16025]
CameraPositionMode = auto
CameraTarget = [0.5 0.5 0.5]
CameraTargetMode = auto
CameraUpVector = [0 1 0]
CameraUpVectorMode = auto
CameraViewAngle = [6.60861]
CameraViewAngleMode = auto
CLim = [0 1]
CLimMode = auto
Color = [0.752941 0.752941 0.752941]
CurrentPoint = [ (2 by 3) double array]
ColorOrder = [ (7 by 3) double array]
DataAspectRatio = [1 1 1]
DataAspectRatioMode = auto
DrawMode = normal
FontAngle = normal
FontName = Helvetica
FontSize = [10]
FontUnits = points
FontWeight = normal
GridLineStyle = :
Layer = top
LineStyleOrder = -
LineWidth = [0.5]
NextPlot = replace
PlotBoxAspectRatio = [1 1 1]
PlotBoxAspectRatioMode = auto
Projection = orthographic
Position = [0 0.96 0.2 0.04]
TickLength = [0.01 0.025]
TickDir = in
TickDirMode = auto
Title = [168]
Units = normalized
View = [0 90]
XColor = [0 0 0]
XDir = normal
XGrid = off
XLabel = [169]
XAxisLocation = bottom
XLim = [0 1]
XLimMode = manual
XScale = linear
XTick = []
XTickLabel =
XTickLabelMode = auto
XTickMode = manual
YColor = [0 0 0]
YDir = normal
YGrid = off
YLabel = [170]
YAxisLocation = left
YLim = [0 1]
YLimMode = manual
YScale = linear
YTick = []
YTickLabel =
YTickLabelMode = auto
YTickMode = manual
ZColor = [0 0 0]
ZDir = normal
ZGrid = off
ZLabel = [171]
ZLim = [0 1]
ZLimMode = auto
ZScale = linear
ZTick = [0 0.5 1]
ZTickLabel =
ZTickLabelMode = auto
ZTickMode = auto

BeingDeleted = off
ButtonDownFcn = btnpress
Children = [ (22 by 1) double array]
Clipping = on
CreateFcn =
DeleteFcn =
BusyAction = queue
HandleVisibility = callback
HitTest = on
Interruptible = on
Parent = [99.0002]
Selected = off
SelectionHighlight = on
Tag = draw
Type = axes
UIContextMenu = []
UserData = [ (1 by 1) struct array]
Visible = off

Назначение свойств графического объекта axes описано в п. 3.2.1. Следует обратить внимание на свойства, выделенные жирным шрифтом. Свойства Type и Tag идентифицируют графический объект. Visible=off означает, что объект axes draw невидимый. Видимыми являются только его потомки, дескрипторы которых перечислены в свойстве Children. Подчинённые объекты, представленные в этом свойстве - это объекты типа line и patch, определяющие вид и состояние кнопок. Состояние кнопок влияет только на свойства подчинённых объектов и не влияет на их состав.

Для разработчиков связанных приложений и вычислительных сценариев важнейшим свойством является UserData. Для объекта axes draw это структура, состав и назначение полей которой представлены в следующей таблице.

Название поля Назначение
state Обычный числовой массив размера (5,1), элементы которого хранят информацию о состоянии каждой кнопки: 0 - кнопка отжата; 1 - кнопка нажата.
buttonId Матрица символов размера (5,6), в которой хранятся идентификаторы кнопок: 'rect ', 'rectc ', 'ellip ', 'ellipc', 'poly '.
pressType Матрица символов размера (5,6), в которой хранятся типы нажатия кнопок. Все эти типы имеют значение 'toggle'. Это означает, что нажатие и отпускание кнопок фиксируется.
exFlag Строка символов, имеющая значение 'no'.
callbacks Матрица символов размера (5,24). Каждая строка - оператор MATLAB, выполняемый при нажатии соответствующей кнопки. Строки имеют следующие значения: 'pdetool('drawrect',1)', 'pdetool('drawrect',2)', 'pdetool('drawellipse',1)', 'pdetool('drawellipse',2)', 'pdetool('drawline')'.
buttonDownFcn Матрица символов размера (5,1), состоящая из пробелов. Каждая строка этой матрицы - имя функции, вызываемой при нажатии соответствующей кнопки. Пробелы означают, что никакие функции не вызываются.
xOffset Числовая матрица размера (5,1), содержащая относительные смещения координаты x для всех кнопок. Эти значения используются для того, чтобы определить, какая кнопка в пределах объекта axes draw нажата.
yOffset Массив, равный zeros(5,1). Относительные смещения координаты y для всех кнопок равны нулю.
groupSize Массив, равный [1 5]. Это означает, что объект axes draw состоит из одной группы кнопок: с первой по пятую.
uicontrolButtons Пустой массив размера (0,0). Это означает, что ссылок на кнопки типа uicontrol нет.
Данная структура является значением свойства UserData для всех "кнопочных" объектов axes.

3.2.3. Свойства объекта axes solve

Функционально графический объект axes solve представляет собой объединение шести кнопок инструментальной панели, дублирующих команды меню групп Boundary, PDE, Mesh, Solve (см. 2.2). Свойства объекта axes solve имеют следующие значения.

ALim = [0 2]
ALimMode = auto
AmbientLightColor = [1 1 1]
Box = on
CameraPosition = [0.5 0.5 18.3205]
CameraPositionMode = auto
CameraTarget = [0.5 0.5 1]
CameraTargetMode = auto
CameraUpVector = [0 1 0]
CameraUpVectorMode = auto
CameraViewAngle = [6.60861]
CameraViewAngleMode = auto
CLim = [0.2047 1.1154]
CLimMode = auto
Color = [0.752941 0.752941 0.752941]
CurrentPoint = [ (2 by 3) double array]
ColorOrder = [ (7 by 3) double array]
DataAspectRatio = [1 1 2]
DataAspectRatioMode = auto
DrawMode = normal
FontAngle = normal
FontName = Helvetica
FontSize = [10]
FontUnits = points
FontWeight = normal
GridLineStyle = :
Layer = top
LineStyleOrder = -
LineWidth = [0.5]
NextPlot = replace
PlotBoxAspectRatio = [1 1 1]
PlotBoxAspectRatioMode = auto
Projection = orthographic
Position = [0.2 0.96 0.24 0.04]
TickLength = [0.01 0.025]
TickDir = in
TickDirMode = auto
Title = [219]
Units = normalized
View = [0 90]
XColor = [0 0 0]
XDir = normal
XGrid = off
XLabel = [220]
XAxisLocation = bottom
XLim = [0 1]
XLimMode = manual
XScale = linear
XTick = []
XTickLabel =
XTickLabelMode = auto
XTickMode = manual
YColor = [0 0 0]
YDir = normal
YGrid = off
YLabel = [221]
YAxisLocation = left
YLim = [0 1]
YLimMode = manual
YScale = linear
YTick = []
YTickLabel =
YTickLabelMode = auto
YTickMode = manual
ZColor = [0 0 0]
ZDir = normal
ZGrid = off
ZLabel = [198]
ZLim = [0 2]
ZLimMode = auto
ZScale = linear
ZTick = [0 1 2]
ZTickLabel =
ZTickLabelMode = auto
ZTickMode = auto

BeingDeleted = off
ButtonDownFcn = btnpress
Children = [ (26 by 1) double array]
Clipping = on
CreateFcn =
DeleteFcn =
BusyAction = queue
HandleVisibility = callback
HitTest = on
Interruptible = on
Parent = [99.0002]
Selected = off
SelectionHighlight = on
Tag = solve
Type = axes
UIContextMenu = []
UserData = [ (1 by 1) struct array]
Visible = off

При необходимости указанные значения свойств можно сравнить со свойствами объекта axes draw (см 3.2.2). Назначение свойств графического объекта axes описано в п. 3.2.1. Следует обратить внимание на свойства, выделенные жирным шрифтом. Свойства Type и Tag идентифицируют графический объект. Visible=off означает, что объект axes solve невидимый. Видимыми являются только его потомки, дескрипторы которых перечислены в свойстве Children (у axes solve этих объектов больше, чем у axes draw). Подчинённые объекты, представленные в этом свойстве - это объекты типа line и patch, определяющие вид и состояние кнопок. Одновременно может быть нажата только одна кнопка. Кнопка может быть нажатой только в том случае, если на неё наведён указатель мыши и удерживается левая или правая кнопка мыши. Отпускание кнопки мыши приводит к немедленному выполнению соответствующей команды. Состояние кнопок axes solve влияет только на свойства подчинённых объектов и не влияет на их состав.

Состав и назначение полей структуры, которая является значением свойства UserData графического объекта axes solve, сведём в таблицу.

Название поля Назначение
state Обычный числовой массив размера (6,1), элементы которого хранят информацию о состоянии каждой кнопки: 0 - кнопка отжата; 1 - кнопка нажата.
buttonId Матрица символов размера (6,6), в которой хранятся идентификаторы кнопок: 'bounds', 'spec ', 'init ', 'refine', 'solve ', 'plot '.
pressType Строка символов, имеющая значение 'flash'. Это означает, что при отпускании нажатой кнопки соответствующая команда выполняется немедленно.
exFlag Строка символов, имеющая значение 'no'.
callbacks Матрица символов размера (6,98). Каждая строка - оператор MATLAB, выполняемый при нажатии соответствующей кнопки. Строки имеют следующие значения: 'pdetool('boundmode')', 'pdetool('set_param')', 'pdetool('initmesh')', 'pdetool('refine')', 'pdetool('solve')', 'pdeptdlg('initialize', 0, getuprop(findobj(get(0, 'Children'), 'flat', 'Tag', 'PDETool'), 'plotstrings'))'.
buttonDownFcn Матрица символов размера (6,1), состоящая из пробелов. Каждая строка этой матрицы - имя функции, вызываемой при нажатии соответствующей кнопки. Пробелы означают, что никакие функции не вызываются.
xOffset Числовая матрица размера (6,1), содержащая относительные смещения координаты x для всех кнопок. Эти значения используются для того, чтобы определить, какая кнопка в пределах объекта axes solve нажата.
yOffset Массив, равный zeros(6,1). Относительные смещения координаты y для всех кнопок равны нулю.
groupSize Массив, равный [1 6]. Это означает, что объект axes solve состоит из одной группы кнопок: с первой по шестую.
uicontrolButtons Пустой массив размера (0,0). Это означает, что ссылок на кнопки типа uicontrol нет.

3.2.4. Свойства объекта axes zoom

Функционально графический объект axes zoom представляет собой кнопку инструментальной панели, дублирующей команду меню Options/ Zoom (см. 2.1.3, 2.2). Свойства объекта axes zoom имеют следующие значения.
ALim = [0 1]
ALimMode = auto
AmbientLightColor = [1 1 1]
Box = on
CameraPosition = [0.5 0.5 9.16025]
CameraPositionMode = auto
CameraTarget = [0.5 0.5 0.5]
CameraTargetMode = auto
CameraUpVector = [0 1 0]
CameraUpVectorMode = auto
CameraViewAngle = [6.60861]
CameraViewAngleMode = auto
CLim = [0 1]
CLimMode = auto
Color = [0.752941 0.752941 0.752941]
CurrentPoint = [ (2 by 3) double array]
ColorOrder = [ (7 by 3) double array]
DataAspectRatio = [1 1 1]
DataAspectRatioMode = auto
DrawMode = normal
FontAngle = normal
FontName = Helvetica
FontSize = [10]
FontUnits = points
FontWeight = normal
GridLineStyle = :
Layer = top
LineStyleOrder = -
LineWidth = [0.5]
NextPlot = replace
PlotBoxAspectRatio = [1 1 1]
PlotBoxAspectRatioMode = auto
Projection = orthographic
Position = [0.44 0.96 0.04 0.04]
TickLength = [0.01 0.025]
TickDir = in
TickDirMode = auto
Title = [222]
Units = normalized
View = [0 90]
XColor = [0 0 0]
XDir = normal
XGrid = off
XLabel = [223]
XAxisLocation = bottom
XLim = [0 1]
XLimMode = manual
XScale = linear
XTick = []
XTickLabel =
XTickLabelMode = auto
XTickMode = manual
YColor = [0 0 0]
YDir = normal
YGrid = off
YLabel = [224]
YAxisLocation = left
YLim = [0 1]
YLimMode = manual
YScale = linear
YTick = []
YTickLabel =
YTickLabelMode = auto
YTickMode = manual
ZColor = [0 0 0]
ZDir = normal
ZGrid = off
ZLabel = [225]
ZLim = [0 1]
ZLimMode = auto
ZScale = linear
ZTick = [0 0.5 1]
ZTickLabel =
ZTickLabelMode = auto
ZTickMode = auto

BeingDeleted = off
ButtonDownFcn = btnpress
Children = [ (5 by 1) double array]
Clipping = on
CreateFcn =
DeleteFcn =
BusyAction = queue
HandleVisibility = callback
HitTest = on
Interruptible = on
Parent = [99.0002]
Selected = off
SelectionHighlight = on
Tag = zoom
Type = axes
UIContextMenu = []
UserData = [ (1 by 1) struct array]
Visible = off

Состав и назначение полей структуры, которая является значением свойства UserData графического объекта axes zoom, сведём в таблицу.

Название поля Назначение
state Число, хранящее информацию о состоянии кнопки: 0 - кнопка отжата; 1 - кнопка нажата.
buttonId Строка символов размера (1,4), равная 'zoom', в которой хранится идентификатор кнопки.
pressType Строка символов, имеющая значение 'toggle'. Это означает, что нажатие и отпускание кнопки фиксируется.
exFlag Строка символов, имеющая значение 'no'.
callbacks Строка символов, равная 'pdetool('zoom')'. Это оператор MATLAB, выполняемый при нажатии кнопки.
buttonDownFcn Строка символов, равная пробелу. Это означает, что никакие функции при нажатии кнопки не вызываются.
xOffset Число нуль (см. предыдущие объекты axes).
yOffset Число нуль (см. предыдущие объекты axes).
groupSize Массив, равный [1 1]. Это означает, что объект axes zoom состоит из одной группы кнопок: с первой по первую.
uicontrolButtons Пустой массив размера (0,0). Это означает, что ссылок на кнопки типа uicontrol нет.

В оглавление книги \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика