Main Content

이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

isosurface

볼륨 데이터에서 등가곡면 데이터 추출

구문

fv = isosurface(X,Y,Z,V,isovalue)
fv = isosurface(V,isovalue)
fvc = isosurface(...,colors)
fv = isosurface(...,'noshare')
fv = isosurface(...,'verbose')
[f,v] = isosurface(...)
[f,v,c] = isosurface(...)
isosurface(...)

설명

fv = isosurface(X,Y,Z,V,isovalue)isovalue에 지정된 등가곡면 값의 볼륨 데이터 V에서 등가곡면 데이터를 계산합니다. 즉, 등고선이 고도각(Elevation)이 같은 점을 연결하는 것처럼 등가곡면이 지정된 값을 갖는 점을 연결합니다.

배열 X, Y, Z는 축 정렬된 카테시안(Cartesian) 그리드를 나타냅니다. V는 이러한 그리드 점의 대응값을 포함합니다. 좌표 배열(X, Y, Z)은 단조(Monotonic)여야 하며 meshgrid에서 생성된 형식을 준수해야 합니다. VX, Y, Z와 크기가 같은 3차원 볼륨 배열이어야 합니다.

struct fv는 등가곡면의 면과 꼭짓점을 포함하며, 이러한 면과 꼭짓점을 patch 명령으로 직접 전달할 수 있습니다.

fv = isosurface(V,isovalue)는 배열 X, Y, Z[X,Y,Z] = meshgrid(1:n,1:m,1:p)로 정의되는 것으로 가정합니다. 여기서 [m,n,p] = size(V)입니다.

fvc = isosurface(...,colors)는 배열 colors를 스칼라 필드로 보간한 다음 보간된 값을 fvc 구조체의 facevertexcdata 필드로 반환합니다. colors 배열의 크기는 V와 동일해야 합니다. colors 인수를 사용하여 등가곡면 계산에 사용된 것과 다른 데이터로 등가곡면의 색 매핑을 제어할 수 있습니다(예: 바람 흐름 등가곡면에 겹쳐 놓은 온도 데이터).

fv = isosurface(...,'noshare')는 공유하는 꼭짓점을 만들지 않습니다. 이는 속도가 더 빠르지만 크기가 더 큰 꼭짓점 세트를 만듭니다.

fv = isosurface(...,'verbose')는 계산이 진행됨에 따라 진행 메시지를 명령 창에 출력합니다.

[f,v] = isosurface(...) 또는 [f,v,c] = isosurface(...)는 면과 꼭짓점(및 faceVertexcCData)을 구조체 대신 별도의 배열로 반환합니다.

출력 인수가 없는 isosurface(...)는 계산된 면과 꼭짓점을 사용하여 현재 좌표축에 패치를 만듭니다. 현재 좌표축이 없으면 3차원 보기를 사용하여 새 좌표축이 생성됩니다.

특별한 경우 동작 — 출력 인수 없이 호출된 등가곡면

현재 좌표축이 없는 경우 출력 인수를 대입하지 않고 isosurface를 호출하면 MATLAB®은 새 좌표축을 만들어 3차원 보기로 설정한 다음 조명을 등가곡면 그래프에 추가합니다.

예제

조명이 있는 등가곡면 그리기

무한 물탱크(무한대로 연료가 공급되는 저장소) 내 수중 분사의 속도 프로파일을 나타내는 흐름 데이터 세트를 불러옵니다. 다음 작업을 통해 데이터 값이 -3일 때의 등가곡면을 그리고 등가곡면의 조명에 대해 준비합니다.

  • 볼륨 데이터를 기반으로 하여 등가곡면 법선 재계산.

  • 면과 모서리 색 설정.

  • 보기 지정.

  • 조명 추가.

[x,y,z,v] = flow;
p = patch(isosurface(x,y,z,v,-3));
isonormals(x,y,z,v,p)
p.FaceColor = 'red';
p.EdgeColor = 'none';
daspect([1 1 1])
view(3); 
axis tight
camlight 
lighting gouraud

등가곡면 색 설정하기

흐름 데이터를 시각화하되, 곡면을 색상별 구분 처리하여 x축상의 크기를 나타내십시오. isosurface에 대한 6번째 인수를 사용합니다. 이는 결과 등가곡면에 색을 칠해서 다른 데이터 세트를 겹칠 수 있는 방법을 제공합니다. colors 변수는 현재 컬러맵으로 표시할 등가곡면의 각 꼭짓점에 대한 스칼라 값을 포함하는 벡터입니다. 이 경우, 이 변수는 곡면을 정의하는 변수 중 하나이지만 완전히 독립적일 수 있습니다. 현재 Figure의 컬러맵을 변경하여 다른 색 체계를 적용할 수 있습니다.

[x,y,z,v] = flow; 
[faces,verts,colors] = isosurface(x,y,z,v,-3,x); 
patch('Vertices',verts,'Faces',faces,'FaceVertexCData',colors,...
    'FaceColor','interp','EdgeColor','interp')
view(30,-15)
axis vis3d
colormap copper

isosurface에서 생성된 fv 구조체는 patch 명령으로 직접 전달할 수 있지만, 개별 면과 개별 꼭짓점 배열(f, v)은 속성 이름을 지정하지 않고 patch에 전달할 수 없습니다. 예를 들면 다음과 같습니다.

patch(isosurface(X,Y,Z,V,isovalue))

또는 다음과 같습니다.

[f,v] = isosurface(X,Y,Z,V,isovalue);
patch('Faces',f,'Vertices',v)

확장 기능

R2006a 이전에 개발됨