Exemple #1
0
        /// <summary>
        /// Can two faces be connected.
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="dim"></param>
        /// <returns></returns>
        public static bool AreConnectable(FaceConnector a, FaceConnector b, int dim)
        {
            if (a.HashCode != b.HashCode)
            {
                return(false);
            }

            var av = a.Vertices;
            var bv = b.Vertices;

            return(!av.Where((t, i) => t != bv[i]).Any());
        }
        /// <summary>
        /// Get an unused face connector. If none is available, create it.
        /// </summary>
        /// <returns></returns>
        public FaceConnector GetConnector()
        {
            if (_connectorStack == null)
            {
                return(new FaceConnector(_dimension));
            }

            var ret = _connectorStack;

            _connectorStack = _connectorStack.Next;
            ret.Next        = null;
            return(ret);
        }
 /// <summary>
 /// Store a face connector in the "embedded" linked list.
 /// </summary>
 /// <param name="connector"></param>
 public void DepositConnector(FaceConnector connector)
 {
     if (_connectorStack == null)
     {
         connector.Next  = null;
         _connectorStack = connector;
     }
     else
     {
         connector.Next  = _connectorStack;
         _connectorStack = connector;
     }
 }
Exemple #4
0
 /// <summary>
 /// Connect two faces.
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 public static void Connect(FaceConnector a, FaceConnector b)
 {
     a.Face.AdjacentFaces[a.EdgeIndex] = b.Face.Index;
     b.Face.AdjacentFaces[b.EdgeIndex] = a.Face.Index;
 }