알고있다 (주의 - 뇌 컴파일 된 코드를 ...)
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 초.
편집 :
는
이 작동 - 주위에 문제 가장자리 것을 : 당신이 (에지 당 하나의 색상을 지정) 원하는대로 가장자리 색상 행동하는 얻을 수있는 한 가지 방법은 다음과 같이 중복 정점을 소개하는 것입니다 색상은 정점 색상 데이터를 통해서만 간접 지정 될 수 있습니다. 버텍스 색상에만 의존한다면 공통 버텍스를 공유하는 모든 가장자리는 그 버텍스에 할당 된 색상으로 끝날 수 있습니다. '평평한'가장자리 색상 설명 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가 직접 가장자리 색상 데이터를 지정할 수 있다면 그것은 더 좋은 것 -하지만이 도움이 ...
희망을 지원하지 않는 것 같습니다.
감사합니다! 각 가장자리가 다른 색으로 채색되도록 색 배열을 보낼 수있는 방법을 보여줄 수 있습니까? – olamundo
@noam : 원하는 것에 따라 몇 가지 다른 색상 옵션이 있습니다. 'facevertexcdata'매개 변수를 사용하여 꼭지점에서 보간 된 색상을 설정할 수 있습니다.이 줄을 따라 아이디어를 얻으려면'edit trimesh '를 입력하십시오. 몇 가지 평면 색상 (''b ','k ','r ', etc')을 원한다면 가장자리를 몇 개의 다른 그룹으로 나누고 각 그룹마다 하나의 색상을 선택할 수 있습니다. 여기서 당신은 색보다 더 많은 가장자리를 가지고 있습니다. 다른 옵션이있을 수 있습니다 - 문서를 확인하십시오 ... –
실제로 여러 색상 중에서 다른 색상으로 각 가장자리를 색칠해야합니다 (일부 구조의 모든지지 빔에 가해지는 스트레스를 표시하고 있다고 가정 해보십시오). 그래서 꼭지점이 아닌 엣지별로 색상을 지정해야합니다. 색상이 많이 있기 때문에 가장자리를 여러 그룹으로 나눌 수 없습니다. – olamundo