public void PerpendicularTest() { var line = new SKLine(new SKPoint(-1, 0), new SKPoint(2, 0)); var point = new SKPoint(0, 0); var rez = Perpendicular(line, point); var onLine = line.OnLine(rez); var dest = line.MinimalDistance(point); }
private SKPoint Perpendicular(SKLine line, SKPoint point) { var a = line.Point1; var b = line.Point2; var c = point; var F0 = c.X - (b.Y - a.Y); var F1 = c.Y + (b.X - a.X); var k2 = ((c.X - a.X) * (b.Y - a.Y) - (b.X - a.X) * (c.Y - a.Y)) / ((b.X - a.X) * (F1 - c.Y) - (F0 - c.X) * (b.Y - a.Y)); var d0 = (F0 - c.X) * k2 + c.X; var d1 = (F1 - c.Y) * k2 + c.Y; //perpendicular = New Point3d(d(0), d(1), 0) return(new SKPoint(d0, d1)); }
private bool PointOnLine(SKLine line, SKPoint point) { var x = line.Point1.X; var y = line.Point1.Y; var x0 = line.Point2.X; var y0 = line.Point2.Y; var dx = point.X; var dy = point.Y; var f0 = (y - y0); var f1 = (x - x0); return(Math.Abs((dy - y0) * f1 - (dx - x0) * f0) < 0.0001); }
private ICollection <SKLine> GenerateLines(Course value) { if (value.Waypoints.Length < 2) { return(Array.Empty <SKLine>()); } var firstPoint = value.Waypoints.First().ToSkPoint(); return(value.Waypoints .Skip(1) .Select( v => { var skPoint = v.ToSkPoint(); var skLine = new SKLine(firstPoint, skPoint); firstPoint = skPoint; return skLine; } ) .ToArray()); }
public static void DrawLine(this SKCanvas canvas, SKLine line, SKPaint paint) { canvas.DrawLine(line.P1.X, line.P1.Y, line.P2.X, line.P2.Y, paint); }
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 void PointOnLine() { var line = new SKLine(new SKPoint(1, 0), new SKPoint(2, 0)); var point = new SKPoint(0, 0); var rez = PointOnSegment(line, point); }
protected static bool InRect(SKLine skLine, SKRect rect) { return(InRect(skLine.Point1, rect) && InRect(skLine.Point2, rect)); }