Advertisement
sA1monxGod

DrawInfiniteLine

Dec 10th, 2019
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.57 KB | None | 0 0
  1. #region GetPoints Methods
  2.  
  3.         private Tuple<Point, Point> GetPointsInfLine(int x1, int y1, int x2, int y2)
  4.         {
  5.             return GetPointsInfLine(new Point(x1, y1), new Point(x2, y2));
  6.         }
  7.  
  8.         private Tuple<Point, Point> GetPointsInfLine(Point p1, Point p2)
  9.         {
  10.             var a = p1.Y - p2.Y;
  11.             var b = p2.X - p1.X;
  12.             var c = p1.X * p2.Y - p1.Y * p2.X;
  13.  
  14.             return GetPointsInfLine(a, b, c);
  15.         }
  16.  
  17.         private Tuple<Point, Point> GetPointsInfLine(int a, int b, int c)
  18.         {
  19.             var height = picture.Height;
  20.             var width = picture.Width;
  21.             var centerX = picture.Width / 2;
  22.             var centerY = picture.Height / 2;
  23.  
  24.             if (b == 0)
  25.             {
  26.                 return new Tuple<Point, Point>(new Point(centerX + (int) (-c * scale / a), 0),
  27.                     new Point(centerX + (int) (-c * scale / a), height));
  28.             }
  29.  
  30.             if (a == 0)
  31.             {
  32.                 return new Tuple<Point, Point>(new Point(0, centerY - (int) (-c * scale / b)),
  33.                     new Point(width, centerY - (int) (-c * scale / b)));
  34.             }
  35.  
  36.             var leftX = 0 - centerX;
  37.             var leftY = centerY + (int) ((a * leftX + c * scale) / b);
  38.             leftX = 0;
  39.  
  40.             var rightX = width - centerX;
  41.             var rightY = centerY + (int) ((a * rightX + c * scale) / b);
  42.             rightX = width;
  43.  
  44.             return new Tuple<Point, Point>(new Point(leftX, leftY), new Point(rightX, rightY));
  45.         }
  46.  
  47.         #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement