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)
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)
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
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
Para cambiar la propiedad de reflectancia de la superficie, utilice la función material
.
material dull % set material to be dull, no specular highlights
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
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
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
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: ''