2016-06-02 18 views
0

Ich habe eine Isooberflächen-Daten in MATLAB. Zum Beispiel:Entfernen eines Eckpunkts aus Matlabs Isofläche

[x,y,z,v] = flow; 
FV = isosurface(x,y,z,v); 

FV = 

vertices: [4208x3 double] 
    faces: [8192x3 double] 

Ich habe auch eine Liste von Scheitelpunkten Indizes, die Ich mag würde entfernen:

verticesToRemove = [1183, 1852, 2219, 1925, 3684]; 

Wie kann ich diese Menge von Knoten aus dem Netz entfernen und die Flächen Liste entsprechend aktualisieren? Ich möchte, dass die topologische Struktur des Netzes gleich bleibt (d. H. Die gelöschten Flächen müssen durch Flächen ersetzt werden, die nicht durch gelöschte Knoten gehen).

Danke!

Antwort

1

Die einfachste Lösung (wenn Sie nur das Netz anzeigen möchten) ist einfach NaN, dann müssen Sie Ihre Faces Matrix nicht aktualisieren und alle Flächen, die diese Vertices verwenden, werden ignoriert Rendern.

Wenn Sie die Struktur an anderer Stelle aktualisieren möchten, können Sie die Flächen neu berechnen. Nachdem Sie die Scheitelpunkte entfernt haben.

% Remove the vertex values at the specified index values 
newVertices = FV.vertices; 
newVertices(verticesToRemove,:) = []; 

% Find the new index for each of the new vertices 
[~, newVertexIndex] = ismember(FV.vertices, newVertices, 'rows'); 

% Find any faces that used the vertices that we removed and remove them 
newFaces = FV.faces(all(FV.faces ~= verticesToRemove, 2),:); 

% Now update the vertex indices to the new ones 
newFaces = newVertexIndex(newFaces); 

FV.vertices = newVertices; 
FV.faces = newFaces; 
+0

Vielen Dank für Ihre Antwort! Es gibt ein anderes Problem, das mir vorher nicht klar war (ich habe meine Frage entsprechend aktualisiert): Ich möchte, dass die Topologie der Struktur gleich bleibt (dh ich möchte keine Löcher im Gitter aufgrund der Vertex-Entfernung erzeugen). Weißt du wie ich das erstellte Loch füllen kann? – drorco

+0

@drorco Soweit ich weiß, ist das ein ziemlich schlecht gestelltes Problem. Sie müssten den Punkt wahrscheinlich entfernen und Ihre Daten erneut verknüpfen. – Suever

+0

und wie kann ich die Daten wiederherstellen? Gibt es eine Funktion dafür? – drorco