Esempio n. 1
0
        // 頂点番号に関連づいた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);
                }
            }
        }
Esempio n. 2
0
        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);
        }