Advertisement
Guest User

Untitled

a guest
Nov 10th, 2015
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.67 KB | None | 0 0
  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             int w = 20;
  6.             int h = 20;
  7.  
  8.             bool[,] res = new bool[w, h];
  9.  
  10.             double x0 = 12; double y0 = 1;
  11.             double dx1 = -5, dy1 = 8;
  12.             double dx2 = 10, dy2 = 7;
  13.  
  14.             var x1 = x0 + dx1 + dx2; // координаты противоположной точки
  15.             var y1 = y0 + dy1 + dy2;
  16.  
  17.             var ymin = (int)Math.Max(Math.Floor(y0), 0);
  18.             var ymax = (int)Math.Min(Math.Ceiling(y1), h - 1);
  19.  
  20.             for (int y = ymin; y <= ymax; y++)
  21.             {
  22.                 var minRowX1 = (y - y0) * dx1 / dy1 + x0;
  23.                 var maxRowX1 = (y - y0) * dx2 / dy2 + x0;
  24.                 var minRowX2 = (y - y1) * dx2 / dy2 + x1;
  25.                 var maxRowX2 = (y - y1) * dx1 / dy1 + x1;
  26.                 var minRowX = (int)Math.Floor(Math.Max(Math.Max(minRowX1, minRowX2), 0));
  27.                 var maxRowX = (int)Math.Floor(Math.Min(Math.Min(maxRowX1, maxRowX2), w - 1));
  28.                 for (int x = minRowX; x <= maxRowX; x++)
  29.                 {
  30.                     // (x, y) - точка внутри
  31.                     res[x, y] = true;
  32.                 }
  33.             }
  34.  
  35.             for (int y = 0; y < h; y++)
  36.             {
  37.                 for (int x = 0; x < w; x++)
  38.                 {
  39.                     if (res[x, y])
  40.                         Console.ForegroundColor = ConsoleColor.Cyan;
  41.                     else
  42.                         Console.ForegroundColor = ConsoleColor.Red;
  43.                     Console.Write('*');
  44.                 }
  45.                 Console.WriteLine();
  46.             }
  47.         }
  48.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement