alphaShape 기반의 지오메트리
MATLAB® alphaShape 함수를 사용하여 3차원 지오메트리를 만듭니다. 먼저, 원통형 구멍이 있는 블록을 나타내는 alphaShape 객체를 만듭니다. 그런 다음 alphaShape 경계에서 지오메트리를 만듭니다.
2차원 메시 그리드를 만듭니다.
[xg,yg] = meshgrid(-3:0.25:3); xg = xg(:); yg = yg(:);
단위 원판을 만듭니다. 단위 원판 내부에 있는 모든 메시 그리드 점을 제거하고 단위 원판의 점은 포함시킵니다.
t = (pi/24:pi/24:2*pi)'; x = cos(t); y = sin(t); circShp = alphaShape(x,y,2); in = inShape(circShp,xg,yg); xg = [xg(~in); cos(t)]; yg = [yg(~in); sin(t)];
나머지 메시 그리드 점의 3차원 복사본을 만듭니다. 이때 z 좌표의 범위는 0~1입니다. 그 점을 결합하여 alphaShape 객체를 만듭니다.
zg = ones(numel(xg),1); xg = repmat(xg,5,1); yg = repmat(yg,5,1); zg = zg*(0:.25:1); zg = zg(:); shp = alphaShape(xg,yg,zg);
alphaShape 객체의 곡면 메시를 생성합니다.
[elements,nodes] = boundaryFacets(shp);
곡면 메시에서 fegeometry 객체를 만듭니다.
gm = fegeometry(nodes,elements)
gm =
fegeometry with properties:
NumCells: 1
NumFaces: 7
NumEdges: 14
NumVertices: 10
Vertices: [10×3 double]
Mesh: []
곡면 메시에서 만들어진 3차원 지오메트리의 경우 Mesh 속성이 빈 상태로 유지됩니다. 해석에 지오메트리를 사용하려면 메시를 만드십시오.
gm = generateMesh(gm); gm.Mesh
ans =
FEMesh with properties:
Nodes: [3×11247 double]
Elements: [10×6880 double]
MaxElementSize: 0.3418
MinElementSize: 0.1709
MeshGradation: 1.5000
GeometricOrder: 'quadratic'
면 레이블을 포함하여 지오메트리를 플로팅합니다.
pdegplot(gm,FaceLabels="on",FaceAlpha=0.5);
메시를 플로팅합니다.
pdemesh(gm);
