Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="vertexSet"></param>
        /// <param name="triangleIndex"></param>
        /// <param name="vertexIndex0"></param>
        /// <param name="vertexIndex1"></param>
        /// <param name="sharedVertIndex0"></param>
        /// <param name="sharedVertIndex1"></param>
        protected void CreateEdge(int vertexSet, int triangleIndex, int vertexIndex0, int vertexIndex1, int sharedVertIndex0,
                                  int sharedVertIndex1)
        {
            var vertPair = new UniqueEdge();

            vertPair.vertexIndex1 = sharedVertIndex0;
            vertPair.vertexIndex2 = sharedVertIndex1;

            if (this.uniqueEdges.Contains(vertPair))
            {
                throw new AxiomException("Edge is shared by too many triangles.");
            }

            this.uniqueEdges.Add(vertPair);

            // create a new edge and initialize as degenerate
            var e = new EdgeData.Edge();

            e.isDegenerate = true;

            // set only first tri, the other will be completed in ConnectEdges
            e.triIndex[0]        = triangleIndex;
            e.sharedVertIndex[0] = sharedVertIndex0;
            e.sharedVertIndex[1] = sharedVertIndex1;
            e.vertIndex[0]       = vertexIndex0;
            e.vertIndex[1]       = vertexIndex1;

            ((EdgeData.EdgeGroup) this.edgeData.edgeGroups[vertexSet]).edges.Add(e);
        }
        /// <summary>
        ///     
        /// </summary>
        /// <param name="vertexSet"></param>
        /// <param name="triangleIndex"></param>
        /// <param name="vertexIndex1"></param>
        /// <param name="vertexIndex2"></param>
        /// <param name="sharedVertIndex1"></param>
        /// <param name="sharedVertIndex2"></param>
        protected void CreateEdge(int vertexSet, int triangleIndex, int vertexIndex0, int vertexIndex1, int sharedVertIndex0, int sharedVertIndex1)
        {
            UniqueEdge vertPair = new UniqueEdge();
            vertPair.vertexIndex1 = sharedVertIndex0;
            vertPair.vertexIndex2 = sharedVertIndex1;

            if (uniqueEdges.Contains(vertPair)) {
                throw new AxiomException("Edge is shared by too many triangles.");
            }

            uniqueEdges.Add(vertPair);

            // create a new edge and initialize as degenerate
            EdgeData.Edge e = new EdgeData.Edge();
            e.isDegenerate = true;

            // set only first tri, the other will be completed in ConnectEdges
            e.triIndex[0] = triangleIndex;
            e.sharedVertIndex[0] = sharedVertIndex0;
            e.sharedVertIndex[1] = sharedVertIndex1;
            e.vertIndex[0] = vertexIndex0;
            e.vertIndex[1] = vertexIndex1;

            ((EdgeData.EdgeGroup)edgeData.edgeGroups[vertexSet]).edges.Add(e);
        }