surfnorm
表面法线
语法
描述
surfnorm (
创建具有法线的曲面,并使用中的元素的列和行索引Z
)Z
随着x而且y分别坐标。
例子
创建表面绘图与表面法线
修改表面图外观
使用表面法线点亮一个表面
用曲面的表面法线照亮平面。
首先,展示一个平坦的表面。
(冲浪的(49)“EdgeColor”,“没有”);
显示曲面,用作光源。
冲浪(峰);
现在,再次绘制平面,这次使用曲面的照明。要做到这一点,首先计算曲面的表面法线。
[nx, ny, nz] = surfnorm(peaks);
结合x, y,z将普通组件表面变成一个49 × 49 × 3的数组。
B =重塑([nx ny nz], 49,49,3);
再次创建一个平面,这次提供该数组作为VertexNormals
财产。MATLAB®使用VertexNormals
属性来计算表面照明。设置照明算法为高洛德
并添加了灯光使用camlight
.
(冲浪的(49)“VertexNormals”b“EdgeColor”,“没有”);照明高洛德camlight
输入参数
X
- - - - - -x坐标
矩阵
x-coordinates,指定为与。大小相同的矩阵Y
而且Z
.
您可以使用meshgrid
函数来创建X
而且Y
矩阵。
的XData
财产的表面
对象存储x坐标。
例子:X = [1 2 3;1 2 3;1 2 3)
例子:(X, Y) = meshgrid (5:0.5:5)
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
Y
- - - - - -y坐标
矩阵
y-coordinates,指定为与。大小相同的矩阵X
而且Z
.
您可以使用meshgrid
函数来创建X
而且Y
矩阵。
的YData
属性的y坐标。
例子:Y = [1 1 1;2 2 2;3 3 3]
例子:(X, Y) = meshgrid (5:0.5:5)
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
Z
- - - - - -z坐标
矩阵
z-coordinates,指定为一个矩阵。Z
必须至少有三行三列。Z
也设置表面颜色。
的ZData
属性的z坐标。
例子:Z = [1 2 3;4 5 6;7 8 9)
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
斧头
- - - - - -绘制的坐标轴
坐标轴对象
要绘制的坐标轴,指定为轴
对象。如果不指定坐标轴,则surfnorm
绘制到当前坐标轴。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:surfnorm (X, Y, Z, FaceAlpha, 0.5,“EdgeColor”,“没有一个”)
创建一个没有绘制边缘的半透明表面。
请注意
这里列出的属性只是一个子集。有关完整列表,请参见表面性质.
EdgeColor
- - - - - -边缘线的颜色
(0 0 0)
(默认)|“没有”
|“平”
|的插值函数
|RGB值|十六进制颜色代码|“r”
|‘g’
|“b”
|……
边线颜色,指定为此处列出的值之一。的默认颜色。(0 0 0)
对应于黑边。
价值 | 描述 |
---|---|
“没有” |
不要画边缘。 |
“平” |
控件中的值为每条边使用不同的颜色 |
的插值函数 |
中的值为每条边使用插值着色 |
RGB三元组、十六进制颜色编码或颜色名称 | 为所有的边使用指定的颜色。控件中的颜色值 |
RGB三联色和十六进制色码用于指定自定义颜色。
RGB三元组是一个三元素行向量,其元素指定颜色的红、绿、蓝成分的强度。强度必须在这个范围内
[0, 1]
;例如,(0.4 0.6 0.7)
.十六进制颜色码是字符向量或以散列符号(
#
)之后是三个或六个十六进制数字,取值范围从0
来F
.这些值不区分大小写。因此,颜色编码“# FF8800”
,“# ff8800”
,“# F80”
,“# f80”
是等价的。
或者,您也可以通过名称指定一些常用颜色。该表列出了已命名的颜色选项、等效的RGB三组和十六进制颜色编码。
颜色名称 | 短名称 | RGB值 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
“红色” |
“r” |
(1 0 0) |
“# FF0000” |
|
“绿色” |
“g” |
(0 1 0) |
“# 00 ff00” |
|
“蓝色” |
“b” |
(0 0 1) |
“# 0000 ff” |
|
“青色” |
“c” |
(0 1 1) |
“# 00飞行符” |
|
“红色” |
“m” |
(1 0 1) |
“#”就 |
|
“黄色” |
“y” |
(1 1 0) |
“# FFFF00” |
|
“黑色” |
“k” |
(0 0 0) |
“000000 #” |
|
“白色” |
“w” |
(1 1 1) |
“# FFFFFF” |
|
这里是RGB三组和十六进制颜色编码的默认颜色MATLAB®在许多类型的情节中使用。
RGB值 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 - 0.7410) |
“# 0072 bd” |
|
(0.8500 0.3250 0.0980) |
“# D95319” |
|
(0.9290 0.6940 0.1250) |
“# EDB120” |
|
(0.4940 0.1840 0.5560) |
“# 7 e2f8e” |
|
(0.4660 0.6740 0.1880) |
“# 77 ac30” |
|
(0.3010 0.7450 0.9330) |
“# 4 dbeee” |
|
(0.6350 0.0780 0.1840) |
“# A2142F” |
|
线型
- - - - - -线条样式
“-”
(默认)|”——“
|”:“
|“-”。
|“没有”
线条样式,指定为该表中列出的选项之一。
线条样式 | 描述 | 产生的线 |
---|---|---|
“-” |
实线 |
|
”——“ |
虚线 |
|
”:“ |
虚线 |
|
“-”。 |
Dash-dotted线 |
|
“没有” |
没有线 | 没有线 |
FaceColor
- - - - - -脸上的颜色
“平”
(默认)|的插值函数
|“没有”
|“texturemap”
|RGB值|十六进制颜色代码|“r”
|‘g’
|“b”
|……
面部颜色,指定为该表中的值之一。
价值 | 描述 |
---|---|
“平” |
的值为每个面使用不同的颜色 |
的插值函数 |
中的值为每个面使用插值着色 |
RGB三元组、十六进制颜色编码或颜色名称 | 为所有的面使用指定的颜色。控件中的颜色值 |
“texturemap” |
转换颜色数据CData 使它与表面一致。 |
“没有” |
不要画脸。 |
RGB三联色和十六进制色码用于指定自定义颜色。
RGB三元组是一个三元素行向量,其元素指定颜色的红、绿、蓝成分的强度。强度必须在这个范围内
[0, 1]
;例如,(0.4 0.6 0.7)
.十六进制颜色码是字符向量或以散列符号(
#
)之后是三个或六个十六进制数字,取值范围从0
来F
.这些值不区分大小写。因此,颜色编码“# FF8800”
,“# ff8800”
,“# F80”
,“# f80”
是等价的。
或者,您也可以通过名称指定一些常用颜色。该表列出了已命名的颜色选项、等效的RGB三组和十六进制颜色编码。
颜色名称 | 短名称 | RGB值 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
“红色” |
“r” |
(1 0 0) |
“# FF0000” |
|
“绿色” |
“g” |
(0 1 0) |
“# 00 ff00” |
|
“蓝色” |
“b” |
(0 0 1) |
“# 0000 ff” |
|
“青色” |
“c” |
(0 1 1) |
“# 00飞行符” |
|
“红色” |
“m” |
(1 0 1) |
“#”就 |
|
“黄色” |
“y” |
(1 1 0) |
“# FFFF00” |
|
“黑色” |
“k” |
(0 0 0) |
“000000 #” |
|
“白色” |
“w” |
(1 1 1) |
“# FFFFFF” |
|
下面是MATLAB在许多类型的图中使用的默认颜色的RGB三组和十六进制颜色代码。
RGB值 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 - 0.7410) |
“# 0072 bd” |
|
(0.8500 0.3250 0.0980) |
“# D95319” |
|
(0.9290 0.6940 0.1250) |
“# EDB120” |
|
(0.4940 0.1840 0.5560) |
“# 7 e2f8e” |
|
(0.4660 0.6740 0.1880) |
“# 77 ac30” |
|
(0.3010 0.7450 0.9330) |
“# 4 dbeee” |
|
(0.6350 0.0780 0.1840) |
“# A2142F” |
|
FaceAlpha
- - - - - -面对透明度
1(默认)|标量范围内[0, 1]
|“平”
|的插值函数
|“texturemap”
脸部透明度,指定为以下值之一:
标量范围内
[0, 1]
-使用统一的透明度在所有的脸。的值1
完全不透明0
是完全透明的。之间的值0
而且1
是半透明的。的透明度值AlphaData
财产。“平”
的值为每个面使用不同的透明度AlphaData
财产。第一个顶点的透明度值决定了整个面的透明度。首先,您必须指定AlphaData
属性作为与ZData
财产。的FaceColor
属性也必须设置为“平”
.的插值函数
-使用插值的透明度为每个面基于的值AlphaData
财产。通过在顶点处插入值,每个面的透明度都不同。首先,您必须指定AlphaData
属性作为与ZData
财产。的FaceColor
属性也必须设置为的插值函数
.“texturemap”
—转换数据AlphaData
使它与表面一致。
FaceLighting
- - - - - -轻物体在脸上的效果
“平”
(默认)|“古尔戈”
|“没有”
光物体在表面上的效果,指定为以下值之一:
“平”
-将光线均匀地涂在每一张脸上。使用此值查看多面对象。“古尔戈”
-改变脸部的光线。计算在顶点处的光,然后线性插值光穿过面。使用此值查看曲面。“没有”
-不要将轻物体的光线照射到脸上。
要向坐标轴添加轻对象,请使用光
函数。
请注意
的“冯氏”
值已被删除。使用“古尔戈”
代替。
输出参数
提示
要反转法线方向,调用
surfnorm
与转置参数:surfnorm (X, Y, Z)
要显示曲面上法线的方向,可以使用
surfnorm
函数来计算曲面法线,然后quiver3
函数来显示它们。(Nx、纽约、新西兰)= surfnorm (X, Y, Z);Nx quiver3 (X, Y, Z, Ny,新西兰)
曲面法线表示顶点处的条件,没有进行归一化。背向观察者的表面元素法线是不可见的。
算法
surfnorm
中使用双三次插值x,y,z计算数据的表面法线的方向。为了允许在边界处进行插值,该函数使用二次外推来扩展数据。在执行数据的双三次拟合后,计算对角向量并交叉以形成每个顶点的法向量。
版本历史
之前介绍过的R2006a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。