Cambiar las propiedades de una superficie
En este ejemplo se 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 habitualmente, como EdgeColor
, LineStyle
, FaceColor
y FaceLighting
.
s = surf(X,Y,Z)
s = Surface with properties: EdgeColor: [0.1294 0.1294 0.1294] LineStyle: '-' FaceColor: 'flat' FaceLighting: 'flat' FaceAlpha: 1 XData: [50×50 double] YData: [50×50 double] ZData: [50×50 double] CData: [50×50 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
Hay varias funciones disponibles para cambiar las propiedades de la superficie. Por ejemplo, use la función shading
para controlar el sombreado de la superficie.
shading interp % interpolate the colormap across the surface face
Use 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 reflectante 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 para 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 una 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: [50×50 double] AlphaDataMapping: 'scaled' AmbientStrength: 0.3000 Annotation: [1×1 matlab.graphics.eventdata.Annotation] BackFaceLighting: 'reverselit' BeingDeleted: off BusyAction: 'queue' ButtonDownFcn: '' CData: [50×50 double] CDataMapping: 'scaled' CDataMode: 'manual' CDataSource: '' Children: [0×0 GraphicsPlaceholder] Clipping: on ContextMenu: [0×0 GraphicsPlaceholder] CreateFcn: '' DataTipTemplate: [1×1 matlab.graphics.datatip.DataTipTemplate] DeleteFcn: '' DiffuseStrength: 0.8000 DisplayName: '' EdgeAlpha: 1 EdgeColor: 'none' EdgeLighting: 'none' FaceAlpha: 'interp' FaceColor: 'interp' FaceLighting: 'gouraud' FaceNormals: [49×49×3 double] FaceNormalsMode: 'auto' HandleVisibility: 'on' HitTest: on Interruptible: on LineStyle: '-' LineWidth: 0.5000 Marker: 'none' MarkerEdgeColor: 'auto' MarkerFaceColor: 'none' MarkerSize: 6 MeshStyle: 'both' Parent: [1×1 Axes] PickableParts: 'visible' Selected: off SelectionHighlight: on SpecularColorReflectance: 1 SpecularExponent: 10 SpecularStrength: 0 Tag: '' Type: 'surface' UserData: [] VertexNormals: [50×50×3 double] VertexNormalsMode: 'auto' Visible: on XData: [50×50 double] XDataMode: 'manual' XDataSource: '' YData: [50×50 double] YDataMode: 'manual' YDataSource: '' ZData: [50×50 double] ZDataSource: ''