Exemple #1
0
        private void HandleTrigIntersection(List <Vector2> intersectList, Triangle triangle, VerticesSegmentor verticesSegmentor, Vector2 selfPos, Vector2 p_pointA, Vector2 p_pointB)
        {
            int pairNum = triangle.pairs.Count;

            for (int i = pairNum - 1; i >= 0; i--)
            {
                TrigPairs pair = triangle.pairs[i];

                Vector2 point = AddIntersectPoint(
                    pair.nodeA + selfPos,
                    pair.nodeB + selfPos,
                    p_pointA, p_pointB
                    );

                //Intersection has occur
                if (!point.Equals(Vector2.positiveInfinity))
                {
                    Triangle.Fragment fragmentA = FindVerticesSegment(verticesSegmentor, pair.nodeA, pair.nodeA + selfPos);
                    Triangle.Fragment fragmentB = FindVerticesSegment(verticesSegmentor, pair.nodeB, pair.nodeB + selfPos);
                    Triangle.Fragment fragmentC = new Triangle.Fragment(point - selfPos, "", Triangle.Fragment.Type.Cutted);

                    triangle.AddFragment(new Triangle.Fragment[] { fragmentA, fragmentB, fragmentC });
                    intersectList.Add(point);
                }
            }
        }
Exemple #2
0
        private Triangle.Fragment FindVerticesSegment(VerticesSegmentor verticesSegmentor, Vector2 vertices, Vector2 worldVert)
        {
            //Triangle.Fragment fragment = new Triangle.Fragment(vertices,);
            string segmentID = (verticesSegmentor.CompareInputWithAverageLine(worldVert)) ? "A" : "B";

            Triangle.Fragment fragment = new Triangle.Fragment(vertices, segmentID, Triangle.Fragment.Type.Original);

            return(fragment);
        }