Main Content

light

创建光源对象

    说明

    示例

    light 在当前坐标区中创建一个 Light 对象。

    您看不到 Light 对象本身,但可以看到它们照射在位于相同坐标区内的任何补片和曲面对象上的效果。有许多函数都可以创建补片和曲面对象,包括 surfmeshpcolorfillfill3,以及 surfacepatch 函数。

    示例

    light(Name,Value) 使用一个或多个名称-值参数设置光源属性。例如,您可以使用 light("Color","green") 将光源的颜色指定为绿色。有关属性列表,请参阅 Light 属性

    示例

    light(ax,___) 将在由 ax 指定的坐标区中而不是在当前坐标区 (gca) 中创建光源对象。将 ax 指定为第一个输入参数,后跟先前语法中的任意输入参数组合。

    示例

    lt = light(___) 返回 Light 对象。创建光源后,使用 lt 修改光源的属性。有关属性列表,请参阅 Light 属性

    示例

    全部折叠

    创建一个球体,并使用 Light 对象照亮它。

    sphere
    axis equal
    light

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

    创建一个球体,用局部光源从 xy 轴的负值角直接照射球体。

    sphere
    axis equal
    
    light("Style","local","Position",[-10 -10 0]);

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

    自 R2019b 开始提供

    您可以使用 tiledlayoutnexttile 函数显示分块图。调用 tiledlayout 函数以创建 1×2 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1ax2。通过将每个坐标区对象指定为 spherelight 的第一个参数,在每个绘图中创建一个球体和对应的光源。

    在左侧坐标区中,通过指定 Color 属性,创建一个球体并用红色光照亮它。在右侧坐标区中,创建一个球体并用绿色光照亮它。

    colormap([1 1 1])
    tiledlayout(1,2)
     
    % Left sphere
    ax1 = nexttile;
    sphere(ax1)
    axis equal
    lt1 = light(ax1);
    lt1.Color = "r";
     
    % Right sphere
    ax2 = nexttile;
    sphere(ax2)
    axis equal
    lt2 = light(ax2);
    lt2.Color = "g";

    Figure contains 2 axes objects. Axes object 1 contains an object of type surface. Axes object 2 contains an object of type surface.

    输入参数

    全部折叠

    坐标区对象。如果未指定坐标区对象,则 light 会在当前坐标区中创建 Light 对象。

    名称-值参数

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

    示例: light(Position=[-1 0 0],Style="local")

    在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

    示例: light("Position",[-1 0 0],"Style","local")

    光的颜色,指定为 RGB 三元组、十六进制颜色代码、颜色名称或短名称。默认的 RGB 三元组 [1 1 1] 与白色对应。

    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

    以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

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

    示例: 'green'

    光源类型,指定为下列值之一:

    • "infinite" - 将光源放置于无穷远处。利用 Position 属性指定光源发射出平行光的方向。

    • "local" - 将光源放置在 Position 属性指定的位置。光是从该位置向所有方向发射的点源。

    光源位置,指定为 [x y z] 形式的三元素向量。以数据单位定义从坐标区原点到 (x, y, z) 坐标的向量元素。光源的实际位置取决于 Style 属性的值。

    示例: [-40 -4 140]

    版本历史记录

    在 R2006a 之前推出

    另请参阅

    | | |