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 を使用して、等値面 (patch オブジェクト) の頂点 (vertices) の色を計算します。配列 XYZ は、C の中のカラー データに対する座標を定義します。これらは、関数 meshgrid で作成されるような直交軸の範囲グリッドを表す単調ベクトルでなければなりません。色は、nc に返されます。C は、3 次元 (インデックス付きカラー) でなければなりません。

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

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

以下の例は、トゥルーカラー (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

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

以下の例では、等値面 (patch オブジェクト) の頂点を使用するトゥルーカラー データを 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

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

拡張機能

バージョン履歴

R2006a より前に導入