Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
 }
Exemplo n.º 6
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));
 }
Exemplo n.º 7
0
 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));
 }