TriangleNet.Tools.QuadNode.FindIntersectionsWithY C# (CSharp) Method

FindIntersectionsWithY() private method

private FindIntersectionsWithY ( double dx, double dy, Point triangle, int index, int k ) : void
dx double
dy double
triangle Point
index int
k int
return void
        void FindIntersectionsWithY(double dx, double dy, Point[] triangle, int index, int k)
        {
            // find intersection with plane y = m_pivot.dY
            double t = (pivot.Y - triangle[k].Y) / (dy);
            if (t < (1 + EPS) && t > -EPS)
            {
                // we have an intersection
                double xComponent = triangle[k].X + t * (dy);

                if (xComponent > pivot.X)
                {
                    if (xComponent <= bounds.Xmax)
                    {
                        AddToRegion(index, SE);
                        AddToRegion(index, NE);
                    }
                }
                else if (xComponent >= bounds.Xmin)
                {
                    AddToRegion(index, SW);
                    AddToRegion(index, NW);
                }
            }
            // find intersection with plane y = m_boundingBox[0].dY
            t = (bounds.Ymin - triangle[k].Y) / dy;
            if (t < (1 + EPS) && t > -EPS)
            {
                // we have an intersection
                double xComponent = triangle[k].X + t * dx;

                if (xComponent <= pivot.X && xComponent >= bounds.Xmin)
                {
                    AddToRegion(index, SW);
                }
                else if (xComponent >= pivot.X && xComponent <= bounds.Xmax)
                {
                    AddToRegion(index, SE);
                }
            }
            // find intersection with plane y = m_boundingBox[1].dY
            t = (bounds.Ymax - triangle[k].Y) / dy;
            if (t < (1 + EPS) && t > -EPS)
            {
                // we have an intersection
                double xComponent = triangle[k].X + t * dx;

                if (xComponent <= pivot.X && xComponent >= bounds.Xmin)
                {
                    AddToRegion(index, NW);
                }
                else if (xComponent >= pivot.X && xComponent <= bounds.Xmax)
                {
                    AddToRegion(index, NE);
                }
            }
        }