Example #1
0
        public SKPoint PerpendicularPointOnLine(SKPoint point)
        {
            //            /*
            //A(xa,ya), B(xb,yb), C(xc,yc).
            //AB(dx,dy) = (xb-xa, yb-ya).
            //BC(dy,-dx) //поверь на слово
            //C = B + BC = (xb+dy, yb-dx) = (xb+yb-ya, yb+xa-xb).
            //             */
            //            var xa = Point1.X;
            //            var ya = Point1.Y;
            //            var xb = Point2.X;
            //            var yb = Point2.Y;
            //            var xc = point.X;
            //            var yc = point.Y;

            //            var x = ((xa - xb) * xc / (yb - ya) - (yb - ya) * xa / (xb - xa) + ya - yc) /
            //                    ((xa - xb) / (yb - ya) - (yb - ya) / (xb - xa));
            //            var y = (xa - xb) * x / (yb - ya) - (xa - xb) * xc / (yb - ya) + yc;

            LinearArithmetic.Perpendicular(Point1.X, Point1.Y, Point2.X, Point2.Y, point.X, point.Y, out var pointX, out var pointY);
            return(new SKPoint(pointX, pointY));
        }
Example #2
0
 private bool PointOnSegment(SKLine line, SKPoint point)
 {
     return(LinearArithmetic.IsBetween(line.Point1.X, line.Point1.Y, line.Point2.X, line.Point2.Y, point.X, point.Y));
 }
Example #3
0
 public bool OnLine(SKPoint point)
 {
     return(LinearArithmetic.IsBetween(Point1.X, Point1.Y, Point2.X, Point2.Y, point.X, point.Y));
 }