Пример #1
0
        /***To check whether the point is in a line segment***/

        public bool InLine(CLineSegment lineSegment)
        {
            bool bInline = false;

            double Ax, Ay, Bx, By, Cx, Cy;

            Bx = lineSegment.EndPoint.X;
            By = lineSegment.EndPoint.Y;
            Ax = lineSegment.StartPoint.X;
            Ay = lineSegment.StartPoint.Y;
            Cx = this.m_dCoordinate_X;
            Cy = this.m_dCoordinate_Y;

            double L = lineSegment.GetLineSegmentLength();
            double s = Math.Abs(((Ay - Cy) * (Bx - Ax) - (Ax - Cx) * (By - Ay)) / (L * L));

            if (Math.Abs(s - 0)
                < ConstantValue.SmallValue)
            {
                if ((SamePoints(this, lineSegment.StartPoint)) ||
                    (SamePoints(this, lineSegment.EndPoint)))
                {
                    bInline = true;
                }
                else if ((Cx < lineSegment.GetXmax()) && (Cx > lineSegment.GetXmin()) && (Cy < lineSegment.GetYmax()) &&
                         (Cy > lineSegment.GetYmin()))
                {
                    bInline = true;
                }
            }
            return(bInline);
        }
Пример #2
0
        /***To check whether the point is in a line segment***/
        public bool InLine(CLineSegment lineSegment)
        {
            bool bInline = false;

            double Ax, Ay, Bx, By, Cx, Cy;
            Bx = lineSegment.EndPoint.X;
            By = lineSegment.EndPoint.Y;
            Ax = lineSegment.StartPoint.X;
            Ay = lineSegment.StartPoint.Y;
            Cx = this.m_dCoordinate_X;
            Cy = this.m_dCoordinate_Y;

            double L = lineSegment.GetLineSegmentLength();
            double s = Math.Abs(((Ay - Cy)*(Bx - Ax) - (Ax - Cx)*(By - Ay))/(L*L));

            if (Math.Abs(s - 0)
                < ConstantValue.SmallValue) {
                if ((SamePoints(this, lineSegment.StartPoint))
                    || (SamePoints(this, lineSegment.EndPoint))) {
                    bInline = true;
                }
                else if ((Cx < lineSegment.GetXmax()) && (Cx > lineSegment.GetXmin()) && (Cy < lineSegment.GetYmax())
                         && (Cy > lineSegment.GetYmin())) {
                    bInline = true;
                }
            }
            return bInline;
        }