surface

steno3d.surface(...)

Create and plot a gridded Steno3D Surface resource

steno3d.surface(Z) creates a Steno3D Project with a Surface grid resource. Heights are defined by Z, an m x n matrix. Values are plotted with unit spacing, where x and y values equal 0:m-1 and 0:n-1, respectively.

steno3d.surface(origin, Z) creates a Steno3D Project with a Surface resource. origin is a 1 x 3 vector offset; x and y values correspond to origin(1) + (0:m-1) and origin(2) + (0:n-1), and heights equal to Z + origin(3).

steno3d.surface(X, Y) creates a Steno3D Project with a flat grid Surface in the horizontal plane with x and y node values corresponding to vectors X and Y, respectively.

steno3d.surface(dir1, h1, dir2, h2, origin) creates a Steno3D Project with a flat grid Surface in an arbitrary plane. The plane is defined by 1 x 3 axes vectors, dir1 and dir2, node locations along those axes, h1 and h2, and a 1 x 3 origin vector. dir1 and dir2 may also be ‘X’, ‘Y’, or ‘Z’ in addition to 1 x 3 axes. For example, the following all produce the same result:

steno3d.surface(0:10, 0:20)
steno3d.surface([1 0 0], 0:10, [0 1 0], 0:20, [0 0 0])
steno3d.surface('X', 0:10, 'Y', 0:20, [0 0 0])

steno3d.surface(..., Z) creates a Steno3D Project and Surface grid with node heights Z, an n x m matrix, where m is the length of X or h1 and n is the length of Y or h2. Z may also be a length m*n vector.

steno3d.surface(..., color) creates a Surface resource of the given color, where color is a 1x3 RGB color, hex color string, named color string, or ‘random’.

steno3d.surface(..., title1, data1, ..., titleN, dataN) adds any number of titled datasets to the Surface resource. title must be a string and data must be a matrix of size m x n or m*n x 1 for node data or a matrix of size (m-1) x (n-1) or (m-1)*(n-1) x 1 for face data, where n is the length(X), length(h1), or size(Z, 1) and m is the length(Y), length(h2), or size(Z, 2). (For more details see steno3d.addData())

steno3d.surface(..., title1, png1, ..., titleN, pngN) adds any number of titled images to the Surface resource. title must be a string and png must be a png file. The image will be stretched to span the entire grid surface. Any number of datasets and textures may be applied to an individual Surface. (For more details see steno3d.addImage())

steno3d.surface(project, ...) adds the Surface resource to project, an existing Steno3D Project. project may also be a figure or axes handle that was created by a Steno3D plotting function.

project = steno3d.surface(...) returns project, the Steno3D Project that contains the new Surface resource.

[project, surface] = steno3d.surface(...) returns project, the Steno3D Project, and surface, the new Surface resource.

An important difference between steno3d.surface the MATLAB builtin surface function is data ordering. This function uses ordering produced by the function ndgrid, where size(Z) == [length(x) length(y)]. The builtin surface function uses ordering produced by the function meshgrid, where size(Z) = [length(y) length(x)]. Also, steno3d.surface does not support additional property/value pairs; after creating the Surface, its properties may be directly modified.

Example:

pngFile = [tempname '.png'];
imwrite(imread('ngc6543a.jpg'), pngFile, 'png');
[myProject, mySurface] = steno3d.surface(                       ...
    'X', 0:20, 'Z', 0:25, [0 0 -25], rand(21, 26), 'k',         ...
    'Increasing Numbers', 1:20*25, 'Space Image', pngFile       ...
);
mySurface.Title = 'Space Image';
mySurface.Description = ['Vertical surface with some random '   ...
                         'bumps and a space image'];
myProject.Title = 'Project with one Surface';
myProject.Pulbic = true;
steno3d.upload(myProject);

See more EXAMPLES

See also steno3d.core.Surface, steno3d.upload, steno3d.addData, steno3d.addImage, steno3d.core.Project