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

В этом примере показано, как получить свойства графика поверхности в 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 определяет цвета для вершин поверхности. The 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 определяет прозрачность для каждой вершины поверхности. The 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: ''