// 頂点番号に関連づいたFaceを削除 public void RemoveVertexRelationFace(int vindex) { int[] indexMap = new int[FaceStore.Count]; var rmFaceList = FindFaceAll(vindex); for (int i = 0; i < rmFaceList.Count; i++) { int rmFace = rmFaceList[i]; RemoveFaceLink(rmFace); indexMap[rmFace] = -1; } int p = 0; for (int i = 0; i < FaceStore.Count; i++) { if (indexMap[i] == -1) { } else { indexMap[i] = p; p++; } } for (int i = 0; i < FaceStore.Count; i++) { HalfEdge head = FaceStore[i].Head; HalfEdge c = head; for (; ;) { c.Face = indexMap[c.Face]; c = c.Next; if (c == head) { break; } } } for (int i = indexMap.Length - 1; i >= 0; i--) { if (indexMap[i] == -1) { FaceStore.RemoveAt(i); } } }
public void RemoveAt() { var ary = new FlexArray <int>() { 10, 20, 30 }; ary.RemoveAt(1); ary.Is(new int[] { 10, default(int), 30 }); ary.RemoveAt(2); ary.Is(new int[] { 10 }); ary.RemoveAt(2); ary.Is(new int[] { 10 }); ary.RemoveAt(-1); ary.Is(new int[] { 10 }); ary.RemoveAt(0); ary.Count.Is(0); }