2017-01-27 9 views
0

Matlabのtrimesh関数に問題があります。プロット後のMatlabの三角形頂点の変更

私がする必要があるのは、trimesh関数によってプロットされた形を残業に変更することです。私は実際には、変換された顔をもう一度プロットすることによってそれを行うことができます、それは私に予想される形を与えます。これは私が私の形状をプロットする方法である:

hc = trimesh(triangles,candide3(:,1),candide3(:,2),candide3(:,3)); 

ここcandide3三角形は、すべての行が三角形であるインデックスの184x3二重の行列である一方で、頂点の113x3二重の行列です。これは私が望むものを正確にプロットしています。次に、顔を変換する必要があります - 三角形は常に同じ行列になりますが、candide3のいくつかのエントリは、リアルタイムで(毎秒約25回)時間外に変更する必要があります。私がこれをすると:

candidet = transform(candide3, ...); 
trimesh(triangles,candide3(:,1),candide3(:,2),candide3(:,3)); 

私は探している変換を正確に取得します。それは問題ありませんが、十分ではありません。私はtrimeshを毎秒25回呼び出すことを避け、代わりに新しい頂点を設定したいと思います。だから私ははこのように、機能を設定してみました:

candidet = transform(candide3, ...); 
set(hc,'XData',candidet(:,1),'YData',candidet(:,2),'ZData',candidet(:,3)); 

をしかし、これは予想される結果を与えるものではありません:それも私が探しているものに近い行かない三角形や表面の混乱をプロットそれは不思議で無作為であると感じます。だからドキュメントを見て、私もこれを試してみました:

candidet = transform(candide3, ...); 
hc.XData = candidet(:,1); 
hc.YData = candidet(:,2); 
hc.ZData = candidet(:,3); 

これは、上記のtryと同じナンセンスを与えます。

私はMax OS X El CapitanでMatlab R2016bを使用しています。誰でも私を助けてくれてありがとう。したがって

h = patch('faces',triangles,'vertices',[x(:) y(:) z(:)],'facevertexcdata',c(:),...); 

、私は次のことをお試しください:あなたはtrimeshが内部でどのように機能するかを確認する場合は

答えて

1

、あなたはそれがtrianglesxは、このようなpatchコマンドにyzは引数を取ることがわかります

hc = trimesh(triangles,candide3(:,1),candide3(:,2),candide3(:,3)); 
candidet = transform(candide3, ...); 
set(hc,'vertices',candidet); 
関連する問題