## SURFACEPROPERTIES Surface Object Properties

Section: Handle-Based Graphics

### Usage

Below is a summary of the properties for the axis.

- `alphadata` - `vector` - This is a vector that should contain as many elements as the surface data itself `cdata`, or a single scalar. For a single scalar, all values of the surface take on the same transparency. Otherwise, the transparency of each pixel is determined by the corresponding value from the `alphadata` vector.
- `alphadatamapping` - `{'scaled','direct','none'}` - For `none` mode (the default), no transparency is applied to the data. For `direct` mode, the vector `alphadata` contains values between @[0,M-1]| where `M` is the length of the alpha map stored in the figure. For `scaled` mode, the `alim` vector for the figure is used to linearly rescale the alpha data prior to lookup in the alpha map.
- `ambientstrength` - Not used.
- `backfacelighting` - Not used.
- `cdata` - `array` - This is either a `M x N` array or an `M x N x 3` array. If the data is `M x N` the surface is a scalar surface (indexed mode), where the color associated with each surface pixel is computed using the colormap and the `cdatamapping` mode. If the data is `M x N x 3` the surface is assumed to be in RGB mode, and the colorpanes are taken directly from `cdata` (the colormap is ignored). Note that in this case, the data values must be between @[0,1]| for each color channel and each point on the surface.
- `cdatamapping` - `{'scaled','direct'}` - For `scaled` (the default), the pixel values are scaled using the `clim` vector for the figure prior to looking up in the colormap. For `direct` mode, the pixel values must be in the range `[0,N-1` where `N` is the number of colors in the colormap.
- `children` - Not used.
- `diffusestrength` - Not used.
- `edgealpha` - `{'flat','interp','scalar'}` - Controls how the transparency is mapped for the edges of the surface.
- `edgecolor` - `{'flat','interp','none',colorspec}` - Specifies how the edges are colored. For `'flat'` the edges are flat colored, meaning that the line segments that make up the edges are not shaded. The color for the line is determined by the first edge point it is connected to.
- `edgelighting` - Not used.
- `facealpha` - `{'flat','interp','texturemap',scalar}` - Controls how the transparency of the faces of the surface are controlled. For flat shading, the faces are constant transparency. For interp mode, the faces are smoothly transparently mapped. If set to a scalar, all faces have the same transparency.
- `facecolor` - `{'none','flat','interp',colorspec}` - Controls how the faces are colored. For `'none'` the faces are uncolored, and the surface appears as a mesh without hidden lines removed. For `'flat'` the surface faces have a constant color. For `'interp'` smooth shading is applied to the surface. And if a colorspec is provided, then the faces all have the same color.
- `facelighting` - Not used.
- `linestyle` - `{'-','--',':','-.','none'}` - The style of the line used to draw the edges.
- `linewidth` - `scalar` - The width of the line used to draw the edges.
- `marker` - `{'+','o','*','.','x','square','s','diamond','d','^','v','>','<'}` - The marker for data points on the line. Some of these are redundant, as `'square'` `'s'` are synonyms, and `'diamond'` and `'d'` are also synonyms.
- `markeredgecolor` - `colorspec` - The color used to draw the marker. For some of the markers (circle, square, etc.) there are two colors used to draw the marker. This property controls the edge color (which for unfilled markers) is the primary color of the marker.
- `markerfacecolor` - `colorspec` - The color used to fill the marker. For some of the markers (circle, square, etc.) there are two colors used to fill the marker.
- `markersize` - `scalar` - Control the size of the marker. Defaults to 6, which is effectively the radius (in pixels) of the markers.
- `meshstyle` - `{'both','rows','cols}` - This property controls how the mesh is drawn for the surface. For `rows` and `cols` modes, only one set of edges is drawn.
- `normalmode` - Not used.
- `parent` - `handle` - The axis containing the surface.
- `specularcolorreflectance` - Not used.
- `specularexponent` - Not used.
- `specularstrength` - Not used.
- `tag` - `string` - You can set this to any string you want.
- `type` - `string` - Set to the string `'surface'`.
- `userdata` - `array` - Available to store any variable you want in the handle object.
- `vertexnormals` - Not used.
- `xdata` - `array` - Must be a numeric array of size `M x N` which contains the x location of each point in the defined surface. Must be the same size as `ydata` and `zdata`. Alternately, you can specify an array of size `1 x N` in which case FreeMat replicates the vector to fill out an `M x N` matrix.
- `xdatamode` - `{'auto','manual'}` - When set to `auto` then FreeMat will automatically generate the x coordinates.
- `ydata` - `array` - Must be a numeric array of size `M x N` which contains the y location of each point in the defined surface. Must be the same size as `xdata` and `zdata`. Alternately, you can specify an array of size `M x 1` in which case FreeMat replicates the vector to fill out an `M x N` matrix.
- `ydatamode` - `{'auto','manual'}` - When set to `auto` then FreeMat will automatically generate the y coordinates.
- `zdata` - `array` - Must be a numeric array of size `M x N` which contains the y location of each point in the defined surface. Must be the same size as `xdata` and `ydata`.
- `visible` - `{'on','off'}` - Controls whether the surface is visible or not.