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)); }
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)); }
public bool OnLine(SKPoint point) { return(LinearArithmetic.IsBetween(Point1.X, Point1.Y, Point2.X, Point2.Y, point.X, point.Y)); }