私はあなたがこのような何か(注意 - 脳コンパイルされたコード...)行うことができると思う
figure;
patch('faces', edges, 'vertices', points, 'edgecolor', 'b');
axis equal;
edges
をNx2
のインデックスのマトリックスで、points
はMx3
の座標のマトリックス(points
の配列の転置)である必要があります。
私の経験から、patch
を直接呼び出すことは、plot
を繰り返し呼び出すよりも大幅に高速になる可能性があります。私の使用して、1000個の、ランダムに生成されたラインセグメントを生成するために、時間をいくつかのアイデアを与えることを
次のようにMATLAB 7.1は、(確かに古い!):
- は
patch
を呼び出す:0.03秒。
plot
を呼び出して0.5秒。
EDIT:あなたは(エッジごとに1色を指定する)したいとエッジの色振る舞いを取得する1つの方法は、次のように重複した頂点を導入することである。
この作品、周りの問題エッジいること色は頂点カラーデータを介してのみ間接的に指定することができます。頂点の色のみに依存する場合、共通の頂点を共有するすべての辺が、その頂点に割り当てられた色で終わる可能性があります。「平坦な」エッジカラーの説明hereを確認してください。
%% a "star" shape, so that we can really see what's going on
%% with the edge colours!!
pp = [0,0,0; 1,-1,0; 1,1,0; -1,1,0; -1,-1,0];
ee = [1,2; 1,3; 1,4; 1,5];
%% important - only 1 colour known per edge, not per vertex!!
cc = (1:size(ee,1))';
%% setup a new set of vertices/edges/colours with duplicate vertices
%% so that each edge gets it's correct colour
nnum = 0;
pnew = zeros(2 * size(ee, 1), 3); %% new vertices
enew = zeros(1 * size(ee, 1), 2); %% new edge indices
cnew = zeros(2 * size(ee, 1), 1); %% new edge colours - via vertices
for j = 1 : size(ee, 1)
n1 = ee(j, 1); %% old edge indices
n2 = ee(j, 2);
enew(j, 1) = nnum + 1; %% new edge indicies into pnew
enew(j, 2) = nnum + 2;
pnew(nnum + 1, :) = pp(n1, :); %% create duplicate vertices
pnew(nnum + 2, :) = pp(n2, :);
cnew(nnum + 1) = cc(j); %% map single edge colour onto both vertices
cnew(nnum + 2) = cc(j);
nnum = nnum + 2;
end
%% Draw the set efficiently via patch
tic
figure;
hold on;
patch('faces', enew, 'vertices', pnew, 'facevertexcdata', cnew, ...
'edgecolor', 'flat', 'facecolor', 'none');
plot(pnew(:,1), pnew(:,2), 'b.');
axis equal;
toc
MATLABは、あなたが直接、エッジの色データを指定することが許可されている場合にはよりよいだろう - しかし、それをサポートしていないようです...
・ホープ、このことができます。
ありがとう:それはSURFACE機能を使用することを含みます!それぞれのエッジが異なる色で色付けされるように、どのように色の配列を送ることができますか? – olamundo
@noam:あなたが何を望むかによって、いくつかの色付けオプションがあります。 ''facevertexcdata''パラメータを使って頂点から補間された色を設定することができます。これらの線に沿ってアイデアを得るには' edit trimesh'をタイプします。いくつかのフラットな色( '' b '、' k '、' r '、etc')をほしいと思ったら、いくつかの異なるグループにエッジを壊して、それぞれのグループに対して単一の色を選ぶことができると思います。ここであなたは色よりも多くのエッジを持っています。他のオプションがあるかもしれません - ドキュメントを確認してください... –
実際には、さまざまな色から各エッジを色付けする必要があります(いくつかの構造のすべてのサポートビームにかかる応力を表示しています)。だから、頂点ではなく、エッジで色を指定する必要があります。色が多いので、いくつかの異なるグループにエッジを分割することはできません。 – olamundo