IsPointInside() public method

public IsPointInside ( Vector2D, point ) : bool
point Vector2D,
return bool
示例#1
0
        private static bool _HitTestTriangleFansResult(DataPair pair, LazyArray <Point3F, PointF> pointsTransformed, RectF rectInWpf, bool isFullContain, ref bool flag1, ref bool flag2)
        {
            var stopCond = false;
            var pt1      = pointsTransformed[pair.Start];

            for (int i = 2; i < pair.Count; i++)
            {
                var pt2 = pointsTransformed[i - 1 + pair.Start];
                var pt3 = pointsTransformed[i + pair.Start];

                var triangle = new Triangle(pt1, pt2, pt3);
                if (!isFullContain)
                {
                    if (rectInWpf.Contains(triangle.P1) || rectInWpf.Contains(triangle.P2) || rectInWpf.Contains(triangle.P3) ||
                        triangle.IsPointInside(rectInWpf.TopLeft) || triangle.IsPointInside(rectInWpf.TopRight) || triangle.IsPointInside(rectInWpf.BottomLeft) || triangle.IsPointInside(rectInWpf.BottomRight))
                    {
                        flag1    = true;
                        stopCond = true;
                        break;
                    }
                }
                else
                {
                    if (!triangle.IsCompletelyInside(rectInWpf))
                    {
                        flag2    = false;
                        stopCond = true;
                        break;
                    }
                }
            }
            return(stopCond);
        }
示例#2
0
        private static bool _HitTestTrianglesResult(IHitTestSource model, DataPair pair, LazyArray <Point3F, PointF> pointsTransformed, RectF rectInWpf, bool isFullContain, ref bool flag1, ref bool flag2)
        {
            var stopCond = false;
            var stride   = model.Mode == GLPrimitiveMode.GL_TRIANGLES ? 3 : 1;

            for (int i = 0; i < pair.Count - 2; i += stride)
            {
                var pt1 = pointsTransformed[i + pair.Start];
                var pt2 = pointsTransformed[i + 1 + pair.Start];
                var pt3 = pointsTransformed[i + 2 + pair.Start];

                var triangle = new Triangle(pt1, pt2, pt3);
                if (!isFullContain)
                {
                    if (rectInWpf.Contains(triangle.P1) || rectInWpf.Contains(triangle.P2) || rectInWpf.Contains(triangle.P3) ||
                        triangle.IsPointInside(rectInWpf.TopLeft) || triangle.IsPointInside(rectInWpf.TopRight) || triangle.IsPointInside(rectInWpf.BottomLeft) || triangle.IsPointInside(rectInWpf.BottomRight))
                    {
                        flag1    = true;
                        stopCond = true;
                        break;
                    }
                }
                else
                {
                    if (!triangle.IsCompletelyInside(rectInWpf))
                    {
                        flag2    = false;
                        stopCond = true;
                        break;
                    }
                }
            }
            return(stopCond);
        }
示例#3
0
 public void IsPointInsideDegenerateTriangle()
 {
     // collinear points
     var triangle = new Triangle(new Point(0, 0), new Point(2, 0), new Point(3, 0));
     Assert.IsFalse(triangle.IsPointInside(new Point(1, 0)), "on edge");
     Assert.IsFalse(triangle.IsPointInside(new Point(0, 3)), "outside");
 }
示例#4
0
        public void IsPointInsideDegenerateTriangle()
        {
            // collinear points
            var triangle = new Triangle(new Point(0, 0), new Point(2, 0), new Point(3, 0));

            Assert.IsFalse(triangle.IsPointInside(new Point(1, 0)), "on edge");
            Assert.IsFalse(triangle.IsPointInside(new Point(0, 3)), "outside");
        }
示例#5
0
        public void IsPointInside()
        {
            var triangle = new Triangle(new Point(0, 0), new Point(2, 0), new Point(0, 3));

            Assert.IsTrue(triangle.IsPointInside(new Point(1, 1)), "inside");
            Assert.IsFalse(triangle.IsPointInside(new Point(2, 3)), "outside");
            Assert.IsFalse(triangle.IsPointInside(new Point(1, 0)), "on edge");
            Assert.IsFalse(triangle.IsPointInside(new Point(0, 0)), "on vertex");
        }
示例#6
0
        public void IsPointInside()
        {
            var triangle = new Triangle(new Point(0, 0), new Point(2, 0), new Point(0, 3));

            Assert.IsTrue(triangle.IsPointInside(new Point(1, 1)), "inside");
            Assert.IsFalse(triangle.IsPointInside(new Point(2, 3)), "outside");
            Assert.IsFalse(triangle.IsPointInside(new Point(1, 0)), "on edge");
            Assert.IsFalse(triangle.IsPointInside(new Point(0, 0)), "on vertex");
        }