Main Content

isocolors

计算等值面和补片颜色

语法

nc = isocolors(X,Y,Z,C,vertices)
nc = isocolors(X,Y,Z,R,G,B,vertices)
nc = isocolors(C,vertices)
nc = isocolors(R,G,B,vertices)
nc = isocolors(...,PatchHandle)
isocolors(...,PatchHandle)

说明

nc = isocolors(X,Y,Z,C,vertices) 使用颜色值 C 计算等值面(补片对象)顶点 (vertices) 的颜色。数组 XYZ 定义 C 中的颜色数据的坐标,并且必须是表示 Cartesian 轴对齐网格的单调向量(就像由 meshgrid 生成一样)。颜色在 nc 中返回。C 必须是三维的(索引颜色)。

nc = isocolors(X,Y,Z,R,G,B,vertices)RGB 用作红色、绿色和蓝色数组(真彩色)。

nc = isocolors(C,vertices)nc = isocolors(R,G,B,vertices) 假定 XYZ 由以下表达式确定

[X Y Z] = meshgrid(1:n,1:m,1:p) 

其中 [m n p] = size(C)

nc = isocolors(...,PatchHandle) 使用 PatchHandle 确定的补片中的顶点。

isocolors(...,PatchHandle)PatchHandle 指定的补片的 FaceVertexCData 属性设置为计算的颜色。

示例

全部折叠

此示例显示等值面并通过使用索引颜色的随机数据为其上色。

[x,y,z] = meshgrid(1:20,1:20,1:20);
data = sqrt(x.^2 + y.^2 + z.^2);
cdata = smooth3(rand(size(data)),'box',7);
p = patch(isosurface(x,y,z,data,10));
isonormals(x,y,z,data,p)
isocolors(x,y,z,cdata,p)
p.FaceColor = 'interp';
p.EdgeColor = 'none';
view(150,30)
daspect([1 1 1])
axis tight
camlight
lighting gouraud

此示例显示等值面并通过真彩色 (RGB) 数据为其上色。

[x,y,z] = meshgrid(1:20,1:20,1:20);
data = sqrt(x.^2 + y.^2 + z.^2);
p = patch(isosurface(x,y,z,data,20));
isonormals(x,y,z,data,p)
[r,g,b] = meshgrid(20:-1:1,1:20,1:20);
isocolors(x,y,z,r/20,g/20,b/20,p)
p.FaceColor = 'interp';
p.EdgeColor = 'none';
view(150,30) 
daspect([1 1 1])
camlight 
lighting gouraud

此示例使用 isocolors 以使用等值面(补片对象)的顶点计算真彩色数据,但然后返回变量 (c) 中的颜色数据以修改这些值。接下来,它将等值面的 FaceVertexCData 显式设置为新数据 (1-c)。

[x,y,z] = meshgrid(1:20,1:20,1:20);
data = sqrt(x.^2 + y.^2 + z.^2);
p = patch(isosurface(data,20));
isonormals(data,p)
[r,g,b] = meshgrid(20:-1:1,1:20,1:20);
c = isocolors(r/20,g/20,b/20,p);
p.FaceVertexCData = 1-c;
p.FaceColor = 'interp';
p.EdgeColor = 'none';
view(150,30) 
daspect([1 1 1])
camlight 
lighting gouraud

扩展功能

版本历史记录

在 R2006a 之前推出