public bool OnLeft(PointF p)
        {
            var ab = new PointF(end.X - start.X, end.Y - start.Y);
            var ap = new PointF(p.X - start.X, p.Y - start.Y);

            return(ab.Cross(ap) >= 0);
        }
        public bool OnLeft(PointF p)
        {
            var ab = new PointF(B.X - A.X, B.Y - A.Y);
            var ap = new PointF(p.X - A.X, p.Y - A.Y);

            return(ab.Cross(ap) >= 0);
        }
        public bool OnLeft(PointF p) //совпадают ли знаки векторных произведений отдельных углов? (обходятся ли углы в одном направлении)
        {
            var ab = new PointF(B.X - A.X, B.Y - A.Y);
            var ap = new PointF(p.X - A.X, p.Y - A.Y);

            return(ab.Cross(ap) >= 0);
        }