exponenta event banner

Изменение свойств поверхности

В этом примере показано, как получить свойства графика поверхности в MATLAB ® и изменить значения свойств для настройки графика.

Объекты поверхности

Существует несколько способов создания объекта поверхности в MATLAB. Один из способов - использовать surf.

[X,Y,Z] = peaks(50);

figure
surf(X,Y,Z)

Figure contains an axes. The axes contains an object of type surface.

Как и все графические объекты, поверхности имеют свойства, которые можно просматривать и изменять. Эти свойства имеют значения по умолчанию. Отображение объекта поверхности, s, показывает наиболее часто используемые свойства поверхности, такие как EdgeColor, LineStyle, FaceColor, и FaceLighting.

s = surf(X,Y,Z)

Figure contains an axes. The axes contains an object of type surface.

s = 
  Surface with properties:

       EdgeColor: [0 0 0]
       LineStyle: '-'
       FaceColor: 'flat'
    FaceLighting: 'flat'
       FaceAlpha: 1
           XData: [50x50 double]
           YData: [50x50 double]
           ZData: [50x50 double]
           CData: [50x50 double]

  Show all properties

Получение свойств отдельных поверхностей

Для доступа к отдельным свойствам используйте синтаксис точечного обозначения object.PropertyName. Например, вернуть FaceColor свойство поверхности.

s.FaceColor
ans = 
'flat'

Изменение часто используемых свойств поверхности

Для изменения свойств поверхности доступно несколько функций. Например, используйте shading для управления затенением поверхности.

shading interp    % interpolate the colormap across the surface face

Figure contains an axes. The axes contains an object of type surface.

Используйте lighting для настройки характеристик освещения поверхности. Для lighting чтобы иметь какое-либо влияние, необходимо осветить поверхность, создав объект-источник света.

light               % create a light
lighting gouraud    % preferred method for lighting curved surfaces

Figure contains an axes. The axes contains an object of type surface.

Чтобы изменить свойство отражательной способности поверхности, используйте material функция.

material dull    % set material to be dull, no specular highlights

Figure contains an axes. The axes contains an object of type surface.

Чтобы задать прозрачность для всех объектов в текущих осях, используйте alpha функция. Эта функция устанавливает прозрачность в любое значение от 1 до 0, где 1 означает полностью непрозрачную, а 0 - полностью прозрачную.

alpha(0.8)    % set transparency to 0.8

Figure contains an axes. The axes contains an object of type surface.

Изменение других свойств поверхности

Чтобы настроить внешний вид поверхности, измените значения свойств с помощью точечной нотации.

CData определяет цвета для вершин поверхности. FaceColor свойство указывает, как цвета граней поверхности определяются из цветов вершин.

s.CData = hypot(X,Y);      % set color data

Figure contains an axes. The axes contains an object of type surface.

s.FaceColor = 'interp';    % interpolate to get face colors

AlphaData определяет прозрачность для каждой вершины поверхности. FaceAlpha свойство указывает, как прозрачность граней поверхности определяется из прозрачности вершин.

s.AlphaData = gradient(Z);    % set vertex transparencies
s.FaceAlpha = 'interp';       % interpolate to get face transparencies

Figure contains an axes. The axes contains an object of type surface.

Получить все свойства поверхности

Графические объекты в MATLAB имеют множество свойств. Для просмотра всех свойств поверхности используйте get команда.

get(s)
          AlignVertexCenters: off
                   AlphaData: [50x50 double]
            AlphaDataMapping: 'scaled'
             AmbientStrength: 0.3000
                  Annotation: [1x1 matlab.graphics.eventdata.Annotation]
            BackFaceLighting: 'reverselit'
                BeingDeleted: off
                  BusyAction: 'queue'
               ButtonDownFcn: ''
                       CData: [50x50 double]
                CDataMapping: 'scaled'
                   CDataMode: 'manual'
                 CDataSource: ''
                    Children: [0x0 GraphicsPlaceholder]
                    Clipping: on
                 ContextMenu: [0x0 GraphicsPlaceholder]
                   CreateFcn: ''
             DataTipTemplate: [1x1 matlab.graphics.datatip.DataTipTemplate]
                   DeleteFcn: ''
             DiffuseStrength: 0.8000
                 DisplayName: ''
                   EdgeAlpha: 1
                   EdgeColor: 'none'
                EdgeLighting: 'none'
                   FaceAlpha: 'interp'
                   FaceColor: 'interp'
                FaceLighting: 'gouraud'
                 FaceNormals: [49x49x3 double]
             FaceNormalsMode: 'auto'
            HandleVisibility: 'on'
                     HitTest: on
               Interruptible: on
                   LineStyle: '-'
                   LineWidth: 0.5000
                      Marker: 'none'
             MarkerEdgeColor: 'auto'
             MarkerFaceColor: 'none'
                  MarkerSize: 6
                   MeshStyle: 'both'
                      Parent: [1x1 Axes]
               PickableParts: 'visible'
                    Selected: off
          SelectionHighlight: on
    SpecularColorReflectance: 1
            SpecularExponent: 10
            SpecularStrength: 0
                         Tag: ''
                        Type: 'surface'
                    UserData: []
               VertexNormals: [50x50x3 double]
           VertexNormalsMode: 'auto'
                     Visible: on
                       XData: [50x50 double]
                   XDataMode: 'manual'
                 XDataSource: ''
                       YData: [50x50 double]
                   YDataMode: 'manual'
                 YDataSource: ''
                       ZData: [50x50 double]
                 ZDataSource: ''