メインコンテンツ

removeDefects

表面メッシュの欠陥の削除

R2022b 以降

    説明

    removeDefects(mesh,"duplicate-vertices") は、表面メッシュ mesh から重複する頂点を削除します。

    removeDefects(mesh,"duplicate-faces") は、表面メッシュ mesh から重複する面を削除します。

    removeDefects(mesh,"unreferenced-vertices") は、表面メッシュ mesh から、参照されていない頂点を削除します。参照されていない頂点とは、いずれの面にも属さない頂点です。

    removeDefects(mesh,"degenerate-faces") は、表面メッシュ mesh から縮退した面を削除します。縮退した面とは、面積がゼロの面です。

    removeDefects(mesh,"nonmanifold-edges") は、表面メッシュ mesh から非多様体エッジを削除します。

    すべて折りたたむ

    表面メッシュのメッシュ頂点とメッシュ面を定義します。

    vertices = [1 -1  1; 1 1 1; -1 1 1; -1 -1 1; ...
                1 -1 -1; 1 1 -1; -1 1 -1; -1 -1 -1];
    faces = [6 2 1; 1 5 6; 8 4 3; 3 7 8; 6 7 3; 3 2 6; ...
             5 1 4; 4 8 5; 4 1 2; 2 3 4; 7 6 5; 5 8 7];

    メッシュを作成して表示します。

    mesh = surfaceMesh(vertices,faces);
    surfaceMeshShow(mesh)

    メッシュに新しい頂点を追加します。

    newVertices = [1, 2, 3; 4, 5, 6];
    addVertices(mesh,newVertices)

    表面メッシュから、参照されていない頂点を削除します。

    removeDefects(mesh,"unreferenced-vertices")

    表面メッシュのメッシュ頂点とメッシュ面を定義します。

    vertices = [0 0 0; 0 0 1; 0 1 1; 0 0 2; 1 0.5 1];
    faces = [1 2 3; 2 3 4; 2 3 5];

    表面メッシュを作成します。

    mesh = surfaceMesh(vertices,faces);

    メッシュがエッジ多様体かどうかをチェックします。

    allowBoundaryEdges = true;
    edgeManifoldBefore = isEdgeManifold(mesh,allowBoundaryEdges)
    edgeManifoldBefore = logical
       0
    
    

    表面メッシュから非多様体エッジを削除して、メッシュがエッジ多様体かどうかをチェックします。

    removeDefects(mesh,"nonmanifold-edges")
    edgeManifoldAfter = isEdgeManifold(mesh,allowBoundaryEdges)
    edgeManifoldAfter = logical
       1
    
    

    入力引数

    すべて折りたたむ

    表面メッシュ。surfaceMesh オブジェクトとして指定します。

    バージョン履歴

    R2022b で導入