Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Cambiar las propiedades de superficie

Este ejemplo muestra cómo obtener las propiedades de una gráfica de superficie en MATLAB® y cómo cambiar los valores de las propiedades para personalizar la gráfica.

Objetos de superficie

Hay varias formas de crear un objeto de superficie en MATLAB. Una manera es utilizar surf.

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

figure
surf(X,Y,Z)

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

Como todos los objetos de gráficas, las superficies tienen propiedades que puede ver y modificar. Estas propiedades tienen valores predeterminados. La visualización del objeto de superficie, s, muestra las propiedades de superficie utilizadas de manera más común, como EdgeColor, LineStyle, FaceColor y FaceLighting.

s = surf(X,Y,Z)

Figure contains an axes object. The axes object 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

Obtener propiedades de superficie individuales

Para acceder a las propiedades individuales, utilice la sintaxis de notación de puntos object.PropertyName. Por ejemplo, devuelva la propiedad FaceColor de la superficie.

s.FaceColor
ans = 
'flat'

Cambiar las propiedades de superficie utilizadas habitualmente

En algunas funciones se pueden cambiar las propiedades de superficie. Por ejemplo, utilice la función shading para controlar el sombreado de la superficie.

shading interp    % interpolate the colormap across the surface face

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

Utilice la función lighting para ajustar las características de iluminación de la superficie. Para que lighting surta efecto, deberá iluminar la superficie creando un objeto de luz.

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

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

Para cambiar la propiedad de reflectancia de la superficie, utilice la función material.

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

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

Para establecer la transparencia de todos los objetos de los ejes actuales, utilice la función alpha. Esta función establece la transparencia en cualquier valor entre 1 y 0, donde 1 significa opacidad total y 0, transparencia total.

alpha(0.8)    % set transparency to 0.8

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

Cambiar otras propiedades de superficie

Para personalizar la apariencia de la superficie, cambie los valores de las propiedades usando notación de puntos.

CData define los colores para los vértices de la superficie. La propiedad FaceColor indica cómo se determinan los colores de las caras de la superficie a partir de los colores de los vértices.

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

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

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

AlphaData define la transparencia de cada vértice de la superficie. La propiedad FaceAlpha indica cómo se determina la transparencia de las caras de la superficie a partir de la transparencia de los vértices.

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

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

Obtener todas las propiedades de la superficie

Los objetos de gráficas en MATLAB tienen muchas propiedades. Para ver todas las propiedades de una superficie, utilice el comando 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: ''