IsPointOnLine() private method

private IsPointOnLine ( Point p ) : bool
p Point
return bool
示例#1
0
        // http://geomalgorithms.com/a05-_intersect-1.html#intersect2D_2Segments()
        private static Point?IntersectionPoint(Ray ray, Line l2, bool mustBeBetweenStartAndEnd)
        {
            var u = ray.Direction;
            var v = l2.Direction;
            var w = ray.Point - l2.StartPoint;
            var d = Perp(u, v);

            if (Math.Abs(d) < Constants.Tolerance)
            {
                // parallel lines
                return(null);
            }

            var sI = Perp(v, w) / d;
            var p  = ray.Point + sI * u;

            if (mustBeBetweenStartAndEnd)
            {
                if (ray.IsPointOn(p) && l2.IsPointOnLine(p))
                {
                    return(p);
                }

                return(null);
            }

            return(p);
        }
示例#2
0
        // http://geomalgorithms.com/a05-_intersect-1.html#intersect2D_2Segments()
        private static Point? IntersectionPoint(Ray ray, Line l2, bool mustBeBetweenStartAndEnd)
        {
            var u = ray.Direction;
            var v = l2.Direction;
            var w = ray.Point - l2.StartPoint;
            var d = Perp(u, v);
            if (Math.Abs(d) < Constants.Tolerance)
            {
                // parallel lines
                return null;
            }

            var sI = Perp(v, w) / d;
            var p = ray.Point + sI * u;
            if (mustBeBetweenStartAndEnd)
            {
                if (ray.IsPointOn(p) && l2.IsPointOnLine(p))
                {
                    return p;
                }

                return null;
            }

            return p;
        }