Main Content

ellipsoid

Create ellipsoid

Description

Create Ellipsoid Data

[X,Y,Z] = ellipsoid(xc,yc,zc,xr,yr,zr) returns the x-, y-, and z-coordinates of an ellipsoid without drawing it. The returned ellipsoid has center coordinates at (xc,yc,zc), semiaxis lengths (xr,yr,zr), and consists of 20-by-20 faces.

The function returns the x-, y-, and z- coordinates as three 21-by-21 matrices.

To draw the ellipsoid using the returned coordinates, use the surf or mesh functions.

example

[X,Y,Z] = ellipsoid(xc,yc,zc,xr,yr,zr,n) returns the x-, y-, and z-coordinates of an ellipsoid with n-by-n faces. The function returns the x-, y-, and z-coordinates as three (n+1)-by-(n+1) matrices.

example

Plot Ellipsoids

ellipsoid(___) plots the ellipsoid without returning the coordinates. Use this syntax with any of the previous input arguments in previous syntaxes.

example

ellipsoid(___,Name=Value) sets properties of the ellipsoid plot using one or more name-value arguments. For example, you can specify the color and transparency of the ellipsoid. For a list of properties, see Surface Properties. (since R2024b)

ellipsoid(ax,___) plots into the axes specified by ax instead of the current axes. Specify the axes as the first input argument.

example

Examples

collapse all

Create and plot an ellipsoid with a center at (0, –0.5, 0) and semiaxis lengths (6, 3.25, 3.25). Use axis equal to use equal data units along each coordinate direction.

ellipsoid(0,-0.5,0,6,3.25,3.25)
axis equal

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

Generate coordinates of an ellipsoid with a center at (0, 0, 0) and semiaxis lengths (1.5, 1.5, 3).

[X,Y,Z] = ellipsoid(0,0,0,1.5,1.5,3);

Create a surface plot of the ellipsoid.

surf(X,Y,Z);
axis equal

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

Plot a second ellipsoid with its center translated by (3, 0, 5) from the first ellipsoid. To be able to rotate the second ellipsoid in the next step, return the surface object as s.

hold on
s = surf(X+3,Y,Z+5);

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

Rotate the second ellipsoid by 45 degrees around its x-axis. The new coordinates of the translated and rotated ellipsoid are stored in s.Xdata, s.Ydata, and s.Zdata.

direction = [1 0 0];
rotate(s,direction,45)

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

Display ellipsoids with center coordinates (0, 0, 0) and semiaxis lengths (2, 1, 1) with different number of faces.

Call the tiledlayout function to create a 2-by-2 tiled chart layout. Call the nexttile function to create the axes. Then, use the ellipsoid function to plot three ellipsoids with different numbers of faces. Plot the ellipsoids in different tiles of the chart by specifying the axes.

tiledlayout(2,2);
ax1 = nexttile;
ellipsoid(ax1,0,0,0,2,1,1)
axis equal
title('20-by-20 faces (Default)')

ax2 = nexttile;
ellipsoid(ax2,0,0,0,2,1,1,50)
axis equal
title('50-by-50 faces')

ax3 = nexttile;
ellipsoid(ax3,0,0,0,2,1,1,80)
axis equal
title('80-by-80 faces')

Figure contains 3 axes objects. Axes object 1 with title 20-by-20 faces (Default) contains an object of type surface. Axes object 2 with title 50-by-50 faces contains an object of type surface. Axes object 3 with title 80-by-80 faces contains an object of type surface.

Input Arguments

collapse all

Coordinates of ellipsoid center, specified as three comma-separated scalar numbers.

Data Types: single | double | duration | datetime

Principal semiaxes along the x-, y-, and z-axes, specified as three comma-separated scalar numbers.

Data Types: single | double

Number of faces, specified as a positive scalar integer.

Target axes, specified as an Axes object. If you do not specify the axes, then ellipsoid plots into the current axes.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: ellipsoid(0,0,0,2,1,1,FaceAlpha=0.5) plots an ellipsoid that is 50% transparent.

Note

The properties listed here are only a subset. For a full list, see Surface Properties.

Face color, specified as one of the values in this table.

ValueDescription
'flat'

Use a different color for each face based on the values in the CData property. First you must specify the CData property as a matrix the same size as ZData. The color value at the first vertex of each face (in the positive x and y directions) determines the color for the entire face. You cannot use this value when the FaceAlpha property is set to 'interp'.

Sample of a surface with each face a different color based on sample values in the CData property

'interp'

Use interpolated coloring for each face based on the values in the CData property. First you must specify the CData property as a matrix the same size as ZData. The color varies across each face by interpolating the color values at the vertices. You cannot use this value when the FaceAlpha property is set to 'flat'.

Sample of a surface with each face showing different interpolated coloring based on sample values in the CData property

RGB triplet, hexadecimal color code, or color name

Use the specified color for all the faces. This option does not use the color values in the CData property.

Sample of a surface with all faces shown in red

'texturemap'Transform the color data in CData so that it conforms to the surface.
'none'Do not draw the faces.

RGB triplets and hexadecimal color codes are useful for specifying custom colors.

  • An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0,1]; for example, [0.4 0.6 0.7].

  • A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (#) followed by three or six hexadecimal digits, which can range from 0 to F. The values are not case sensitive. Thus, the color codes "#FF8800", "#ff8800", "#F80", and "#f80" are equivalent.

Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.

Color NameShort NameRGB TripletHexadecimal Color CodeAppearance
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB® uses in many types of plots.

RGB TripletHexadecimal Color CodeAppearance
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Face transparency, specified as one of these values:

  • Scalar in range [0,1] — Use uniform transparency across all the faces. A value of 1 is fully opaque and 0 is completely transparent. Values between 0 and 1 are semitransparent. This option does not use the transparency values in the AlphaData property.

  • 'flat' — Use a different transparency for each face based on the values in the AlphaData property. The transparency value at the first vertex determines the transparency for the entire face. First you must specify the AlphaData property as a matrix the same size as the ZData property. The FaceColor property also must be set to 'flat'.

  • 'interp' — Use interpolated transparency for each face based on the values in AlphaData property. The transparency varies across each face by interpolating the values at the vertices. First you must specify the AlphaData property as a matrix the same size as the ZData property. The FaceColor property also must be set to 'interp'.

  • 'texturemap' — Transform the data in AlphaData so that it conforms to the surface.

Edge line color, specified as one of the values listed here. The default color of [0 0 0] corresponds to black edges.

ValueDescription
'none'Do not draw the edges.
'flat'

Use a different color for each edge based on the values in the CData property. First you must specify the CData property as a matrix the same size as ZData. The color value at the first vertex of each face (in the positive x and y directions) determines the color for the adjacent edges. You cannot use this value when the EdgeAlpha property is set to 'interp'.

Sample of a surface with each edge a different color based on sample values in the CData property

'interp'

Use interpolated coloring for each edge based on the values in the CData property. First you must specify the CData property as a matrix the same size as ZData. The color varies across each edge by linearly interpolating the color values at the vertices. You cannot use this value when the EdgeAlpha property is set to 'flat'.

Sample of a surface with each edge showing different interpolated coloring based on sample values in the CData property

RGB triplet, hexadecimal color code, or color name

Use the specified color for all the edges. This option does not use the color values in the CData property.

Sample of a surface with all edges shown in red

RGB triplets and hexadecimal color codes are useful for specifying custom colors.

  • An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0,1]; for example, [0.4 0.6 0.7].

  • A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (#) followed by three or six hexadecimal digits, which can range from 0 to F. The values are not case sensitive. Thus, the color codes "#FF8800", "#ff8800", "#F80", and "#f80" are equivalent.

Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.

Color NameShort NameRGB TripletHexadecimal Color CodeAppearance
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.

RGB TripletHexadecimal Color CodeAppearance
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Edge line color, specified as one of the values listed here. The default color of [0 0 0] corresponds to black edges.

ValueDescription
'none'Do not draw the edges.
'flat'

Use a different color for each edge based on the values in the CData property. First you must specify the CData property as a matrix the same size as ZData. The color value at the first vertex of each face (in the positive x and y directions) determines the color for the adjacent edges. You cannot use this value when the EdgeAlpha property is set to 'interp'.

Sample of a surface with each edge a different color based on sample values in the CData property

'interp'

Use interpolated coloring for each edge based on the values in the CData property. First you must specify the CData property as a matrix the same size as ZData. The color varies across each edge by linearly interpolating the color values at the vertices. You cannot use this value when the EdgeAlpha property is set to 'flat'.

Sample of a surface with each edge showing different interpolated coloring based on sample values in the CData property

RGB triplet, hexadecimal color code, or color name

Use the specified color for all the edges. This option does not use the color values in the CData property.

Sample of a surface with all edges shown in red

RGB triplets and hexadecimal color codes are useful for specifying custom colors.

  • An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0,1]; for example, [0.4 0.6 0.7].

  • A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (#) followed by three or six hexadecimal digits, which can range from 0 to F. The values are not case sensitive. Thus, the color codes "#FF8800", "#ff8800", "#F80", and "#f80" are equivalent.

Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.

Color NameShort NameRGB TripletHexadecimal Color CodeAppearance
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.

RGB TripletHexadecimal Color CodeAppearance
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Edge transparency, specified as one of these values:

  • Scalar in range [0,1] — Use uniform transparency across all of the edges. A value of 1 is fully opaque and 0 is completely transparent. Values between 0 and 1 are semitransparent. This option does not use the transparency values in the AlphaData property.

  • 'flat' — Use a different transparency for each edge based on the values in the AlphaData property. First you must specify the AlphaData property as a matrix the same size as the ZData property. The transparency value at the first vertex determines the transparency for the entire edge. The EdgeColor property also must be set to 'flat'.

  • 'interp' — Use interpolated transparency for each edge based on the values in AlphaData property. First you must specify the AlphaData property as a matrix the same size as the ZData property. The transparency varies across each edge by interpolating the values at the vertices. The EdgeColor property also must be set to 'interp'.

Algorithms

ellipsoid generates the data using this equation:

(xxc)2xr2+(yyc)2yr2+(zzc)2zr2=1.

ellipsoid(0,0,0,1,1,1) is equivalent to a unit sphere.

Version History

Introduced before R2006a

expand all

See Also

Functions

Properties