Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main(string[] args)
- {
- int w = 20;
- int h = 20;
- bool[,] res = new bool[w, h];
- double x0 = 12; double y0 = 1;
- double dx1 = -5, dy1 = 8;
- double dx2 = 10, dy2 = 7;
- var x1 = x0 + dx1 + dx2; // координаты противоположной точки
- var y1 = y0 + dy1 + dy2;
- var ymin = (int)Math.Max(Math.Floor(y0), 0);
- var ymax = (int)Math.Min(Math.Ceiling(y1), h - 1);
- for (int y = ymin; y <= ymax; y++)
- {
- var minRowX1 = (y - y0) * dx1 / dy1 + x0;
- var maxRowX1 = (y - y0) * dx2 / dy2 + x0;
- var minRowX2 = (y - y1) * dx2 / dy2 + x1;
- var maxRowX2 = (y - y1) * dx1 / dy1 + x1;
- var minRowX = (int)Math.Floor(Math.Max(Math.Max(minRowX1, minRowX2), 0));
- var maxRowX = (int)Math.Floor(Math.Min(Math.Min(maxRowX1, maxRowX2), w - 1));
- for (int x = minRowX; x <= maxRowX; x++)
- {
- // (x, y) - точка внутри
- res[x, y] = true;
- }
- }
- for (int y = 0; y < h; y++)
- {
- for (int x = 0; x < w; x++)
- {
- if (res[x, y])
- Console.ForegroundColor = ConsoleColor.Cyan;
- else
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Write('*');
- }
- Console.WriteLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement