IsPointInTriangle() static private method

Test, if a given point lies inside a triangle.
static private IsPointInTriangle ( Point p, Point t0, Point t1, Point t2 ) : bool
p Point Point to locate.
t0 Point Corner point of triangle.
t1 Point Corner point of triangle.
t2 Point Corner point of triangle.
return bool
Exemplo n.º 1
0
        public ITriangle Query(double x, double y)
        {
            Point            point     = new Point(x, y);
            List <int>       nums      = this.root.FindTriangles(point);
            List <ITriangle> triangles = new List <ITriangle>();

            foreach (int num in nums)
            {
                ITriangle triangle = this.triangles[num];
                if (!QuadTree.IsPointInTriangle(point, triangle.GetVertex(0), triangle.GetVertex(1), triangle.GetVertex(2)))
                {
                    continue;
                }
                triangles.Add(triangle);
            }
            return(triangles.FirstOrDefault <ITriangle>());
        }
Exemplo n.º 2
0
 private void AddTriangleToRegion(Point[] triangle, int index)
 {
     this.bitRegions = 0;
     if (QuadTree.IsPointInTriangle(this.pivot, triangle[0], triangle[1], triangle[2]))
     {
         this.AddToRegion(index, 0);
         this.AddToRegion(index, 1);
         this.AddToRegion(index, 2);
         this.AddToRegion(index, 3);
         return;
     }
     this.FindTriangleIntersections(triangle, index);
     if (this.bitRegions == 0)
     {
         int num = this.FindRegion(triangle[0]);
         this.regions[num].triangles.Add(index);
     }
 }
Exemplo n.º 3
0
        void AddTriangleToRegion(Point[] triangle, int index)
        {
            bitRegions = 0;
            if (QuadTree.IsPointInTriangle(pivot, triangle[0], triangle[1], triangle[2]))
            {
                AddToRegion(index, SW);
                AddToRegion(index, SE);
                AddToRegion(index, NW);
                AddToRegion(index, NE);
                return;
            }

            FindTriangleIntersections(triangle, index);

            if (bitRegions == 0)
            {
                // we didn't find any intersection so we add this triangle to a point's region
                int region = FindRegion(triangle[0]);
                regions[region].triangles.Add(index);
            }
        }