2

Mathematica を使用して、次のプロットを作成できました

今、私はMatlabに切り替えたいと思っています.Matlabは学び始めたばかりです. FL.vertices と FL.faces マトリックスとパッチ関数を使用して三角形分割を作成できました。これは次のようになります。

faces=FV.faces; 
facecolor = [.7 .7 .7]; 
patch('faces',faces,'vertices',FV.vertices,...
'facecolor',facecolor,'facealpha',0.8,'edgecolor',[.8.8.8]);
camlight('headlight','infinite'); 
daspect([1 1 1]); axis vis3d; axis off 
material dull;

それは鈍いイメージを生み出します:

これで、マトリックス FL.vertices を取り、正の値のマトリックスを返す関数 J ができました。頂点の J の値に応じて面に色を付けたいと思います。おそらく面に沿って補間します。エッジは、今のところそのままで、後で処理できます。ドキュメントを読んだ後、このタスクを達成する方法が明確ではありません。J の最小値と最大値を手動で見つける必要がありますか? または、Matlab は自動的に実行できますか? 今のところ、Matlab のプリセット カラー スキームの 1 つを使用しても問題ありません。「温度マップ」のようなものです。どの時点で関数 J を呼び出す必要がありますか? patch コマンドでどの程度正確に使用する必要がありますか? 同様の質問に対する以前の回答を調べましたが、それでも自分のケースに対処する方法がわかりません。任意の支援提案をいただければ幸いです。

PS OK。シンプルにできたと思います

FV.Cdata=sphere_jacobian(FV.vertices,1,1,0,1);
figure
Hp = patch('faces',FV.faces,'vertices',FV.vertices,...
'FaceVertexCData',FV.Cdata,'facecolor','interp','edgecolor',[.8 .8 .8]); 

しかし、最小値と最大値が自動的に計算され補間されているかどうかはわかりません。

4

1 に答える 1

1

これがポスターによって与えられた答えであると私が信じているものです。質問が開かれたままにならないようにここに置きます。

わかった。シンプルにできたと思います

FV.Cdata=sphere_jacobian(FV.vertices,1,1,0,1);
figure
Hp = patch('faces',FV.faces,'vertices',FV.vertices,...
'FaceVertexCData',FV.Cdata,'facecolor','interp','edgecolor',[.8 .8 .8]); 

しかし、最小値と最大値が自動的に計算され補間されているかどうかはわかりません。


やった

colormap(hsv(3200)); 

そして私の機能を正規化しました:

jac = sphere_jacobian(FV.vertices,m); 
minj = min(jac);
maxj = max(jac);
jac1 = (jac-minj*ones(size(jac)))/(maxj-minj);FV.Cdata=jac1; 
figure Hp = patch('faces',FV.faces,'vertices',FV.vertices,... 'FaceVertexCData',FV.Cdata,'facecolor','interp','edgecolor',[.8 .8 .8]);

結果はこちらでご覧いただけます

于 2012-12-27T10:41:59.687 に答える