主要内容

ellipsoid

创建椭圆体

说明

创建椭圆体数据

[X,Y,Z] = ellipsoid(xc,yc,zc,xr,yr,zr) 返回椭圆体的 xyz 坐标,但不进行绘制。返回的椭圆体的中心坐标为 (xc,yc,zc),半轴长度为 (xr,yr,zr),由 20×20 个面组成。

该函数以三个 21×21 矩阵形式返回 xyz 坐标。

要使用返回的坐标绘制椭圆体,请使用 surfmesh 函数。

示例

[X,Y,Z] = ellipsoid(xc,yc,zc,xr,yr,zr,n) 返回具有 n×n 个面的椭圆体的 xyz 坐标。该函数以三个 (n+1)×(n+1) 矩阵形式返回 xyz 坐标。

示例

绘制椭圆体

ellipsoid(___) 绘制椭圆体,但不返回坐标。此语法与上述语法中的任一前面的输入参量结合使用。

示例

ellipsoid(___,Name=Value) 使用一个或多个名称-值参量设置椭圆体图的属性。例如,您可以指定椭圆体的颜色和透明度。有关属性列表,请参阅 Surface 属性 (自 R2024b 起)

ellipsoid(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区中。指定坐标区作为第一个输入参量。

示例

示例

全部折叠

创建并绘制一个以 (0, –0.5, 0) 为中心、半轴长度为 (6, 3.25, 3.25) 的椭圆体。使用 axis equal 可沿每个坐标方向使用相等的数据单位。

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.

生成以 (0, 0, 0) 为中心、半轴长度为 (1.5, 1.5, 3) 的椭圆体的坐标。

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

创建椭圆体的曲面图。

surf(X,Y,Z);
axis equal

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

绘制第二个椭圆体,其中心从第一个椭圆体平移 (3, 0, 5)。为了能够在下一步骤中旋转第二个椭圆体,将曲面对象返回为 s

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

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

将第二个椭圆体围绕其 x 轴旋转 45 度。平移和旋转后的椭圆体的新坐标存储在 s.Xdatas.Ydatas.Zdata 中。

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

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

显示均以坐标 (0, 0, 0) 为中心、半轴长度为 (2, 1, 1) 但具有不同面数的多个椭圆体。

调用 tiledlayout 函数以创建 2×2 分块图布局。调用 nexttile 函数来创建坐标区。然后,使用 ellipsoid 函数绘制三个具有不同面数的椭圆体。通过指定坐标区,在图的不同图块中绘制椭圆体。

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.

输入参数

全部折叠

椭圆体中心坐标,指定为以逗号分隔的三个标量数字。

数据类型: single | double | duration | datetime

沿 xyz 轴的主半轴,指定为以逗号分隔的三个标量数字。

数据类型: single | double

面的数量,指定为正整数标量。

目标坐标区,指定为 Axes 对象。如果未指定坐标区,则 ellipsoid 在当前坐标区中绘图。

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

示例: ellipsoid(0,0,0,2,1,1,FaceAlpha=0.5) 绘制 50% 透明度的椭圆体。

注意

此处所列的属性只是一部分。有关完整列表,请参阅 Surface 属性

面颜色,指定为下表中的值之一。

描述
'flat'

根据 CData 属性中的值,对每个面使用不同的颜色。首先您必须将 CData 属性指定为矩阵,大小与 ZData 相同。每个面的第一个顶点(正 xy 方向)的颜色值决定整个面的颜色。当 FaceAlpha 属性设置为 'interp' 时,不能使用此值。

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

'interp'

根据 CData 属性中的值,对每个面使用插补着色。首先您必须将 CData 属性指定为矩阵,大小与 ZData 相同。通过基于各顶点处颜色值进行插值,每个面上的颜色会渐变。当 FaceAlpha 属性设置为 'flat' 时,不能使用此值。

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

RGB 三元组、十六进制颜色代码或颜色名称

对所有面使用指定的颜色。此选项不会使用 CData 属性中的颜色值。

Sample of a surface with all faces shown in red

'texturemap'变换 CData 中的颜色数据,以便其符合曲面。
'none'不绘制面。

RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 "#FF8800""#ff8800""#F80""#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
"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

下表列出了浅色和深色主题中绘图的默认调色板。

调色板调色板颜色

"gem" - 浅色主题默认值

在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。

Sample of the "gem" color palette

"glow" - 深色主题默认值

Sample of the "glow" color palette

您可以使用 orderedcolorsrgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。

在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。

面透明度,指定为下列值之一:

  • 范围 [0,1] 中的标量 - 在所有面上使用统一的透明度。值为 1 时完全不透明,值为 0 时完全透明。介于 01 之间的值表示半透明。此选项不会使用 AlphaData 属性中的透明度值。

  • 'flat' - 根据 AlphaData 属性中的值,对每个面使用不同的透明度。第一个顶点的透明度值确定整个面的透明度。首先您必须将 AlphaData 属性指定为矩阵,大小与 ZData 属性相同。FaceColor 属性也必须设置为 'flat'

  • 'interp' - 根据 AlphaData 属性中的值,对每个面使用插值透明度。通过基于各顶点处透明度数值进行插值,每个面上的透明度会渐变。首先您必须将 AlphaData 属性指定为矩阵,大小与 ZData 属性相同。FaceColor 属性也必须设置为 'interp'

  • 'texturemap' - 变换 AlphaData 中的数据,以便其符合曲面。

边线颜色,指定为下面列出的值之一。默认颜色 [0 0 0] 对应于黑边。

描述
'none'不绘制边。
'flat'

根据 CData 属性中的值,对每个边使用不同的颜色。首先您必须将 CData 属性指定为矩阵,大小与 ZData 相同。每个面(正的 xy 方向)的第一个顶点处的颜色值确定相邻边的颜色。当 EdgeAlpha 属性设置为 'interp' 时,不能使用此值。

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

'interp'

根据 CData 属性中的值,对每个边使用插补着色。首先您必须将 CData 属性指定为矩阵,大小与 ZData 相同。通过基于各顶点处颜色值进行线性插值,每条边上的颜色会渐变。当 EdgeAlpha 属性设置为 'flat' 时,不能使用此值。

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

RGB 三元组、十六进制颜色代码或颜色名称

对所有边使用指定的颜色。此选项不会使用 CData 属性中的颜色值。

Sample of a surface with all edges shown in red

RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 "#FF8800""#ff8800""#F80""#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
"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

下表列出了浅色和深色主题中绘图的默认调色板。

调色板调色板颜色

"gem" - 浅色主题默认值

在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。

Sample of the "gem" color palette

"glow" - 深色主题默认值

Sample of the "glow" color palette

您可以使用 orderedcolorsrgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。

在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。

边透明度,指定为下列值之一:

  • [0,1] 范围内的标量 - 在所有边上都使用统一的透明度。值为 1 时完全不透明,值为 0 时完全透明。介于 01 之间的值表示半透明。此选项不会使用 AlphaData 属性中的透明度值。

  • 'flat' - 根据 AlphaData 属性中的值,对每个边使用不同透明度。首先您必须将 AlphaData 属性指定为矩阵,大小与 ZData 属性相同。第一个顶点上的透明度值确定整条边的透明度。EdgeColor 属性也必须设置为 'flat'

  • 'interp' - 根据 AlphaData 属性中的值,对每个边使用插值透明度。首先您必须将 AlphaData 属性指定为矩阵,大小与 ZData 属性相同。通过基于各顶点处值进行插值,每条边上的透明度会渐变。EdgeColor 属性也必须设置为 'interp'

算法

ellipsoid 使用以下方程生成数据:

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

ellipsoid(0,0,0,1,1,1) 等效于单位球体。

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

函数

属性