in + 2 * dy);=a - ax * (xmin - dx);= b - ay * (ymax + dy) ;. Transform=new Matrix (ax, 0, 0, ay, bx, by); hline=(xmax - xmin) * 0.001f; blackPen=new Pen (Color. Black, hline); bluePen=new Pen (Color. Blue, hline);=tmin ;. DrawLine (bluePen, xmin, 0, xmax, 0) ;. DrawLine (bluePen, 0, ymin, 0, ymax); (t lt;=tmax)
{. DrawLine (blackPen, F1 (t), F2 (t), F1 (t + h), F2 (t + h));=t + h;
}
} float F1 (float x)
{(float) (6 * Math. Cos (x) + 2 * Math. Cos (6 * x));
} float F2 (float x)
{(float) (6 * Math. Sin (x) - 2 * Math. Sin (6 * x));
} void Form1_Resize (object sender, EventArgs e)
{();
}
}
}
Малюнок 1.2 Реалізація програми, яка будує двовимірний графік функції, заданої параметрично
2. Перетворення двовимірних координат
Завдання: Написати програму, що демонструє перетворення двовимірних координат (перенос, поворот і масштабування). Вивести графік функції до перетворення і після нього в одному вікні [2].
Рішення:
using System; System. Collections. Generic; System. ComponentModel; System. Data; System. Drawing; System. Linq; System. Text; System. Windows. Forms; System. Drawing; System. Drawing. Drawing2D; WindowsFormsApplication1
{partial class Form1: Form
{Form1 ()
{();
} float transX (float x, float y, float Alfa, float d, float s)
{(float) ((s * x * Math. Cos (Alfa) + s * y * Math. Sin (Alfa) + d));
} float transY (float x, float y, float Alfa, float d, float s)
{(float) (-s * x * Math. Sin (Alfa) + s * y * Math. Cos (Alfa) + d);
} override void OnPaint (PaintEventArgs e)
{. OnPaint (e); g=e. Graphics; fi, fimin, fimax, xmin, xmax, ymin, ymax, x, y, h, x2, y2; tx, ty, Alfa, s;=2;=10; ty=7; Alfa=(float) (Math.PI)/6;=0; fimax=(float) (4 * (Math.PI));=(fimax - fimin)/100;=(float) (F (fimin) * Math. Cos (fimin));=(float) (F (fimin ) * Math. Sin (fimin));=xmin;=ymin;=fimin + h; (fi lt; fimax)
{= (float) (F (fi) * Math. Cos (fi)); (x lt; xmin) xmin=x; (x gt; xmax) xmax=x;=(float) (F (fi ) * Math. Sin (fi)); (y lt; ymin) ymin=y; (y gt; ymax) ymax=y;=transX (x, y, Alfa, tx, s); (x2 lt; xmin) xmin=x2; (x2 gt; xmax) xmax=x2;=transY (x, y, Alfa, ty, s); (y2 lt; ymin) ymin=y2; (y2 gt; ymax) ymax=y2;=fi + h;
} dx=(xmax - xmin) * 0.03f; dy=(ymax - ymin) * 0.03f; ax=ClientSize. Width/(xmax - xmin + 2 * dx); ay=- ClientSize. Height/(ymax - ymin + 2 * dy); bx=- ax * (xmin - dx); by=- ay * (ymax + dy); hf, wf, a, b, c, d; asm=(xmax- xmin)/(ymax - ymin); asf=(float) ClientSize. Width/(float) ClientSize. Height; (asm gt; asf)
{= ClientSize. Width;=(ymax - ymin) * wf/(xmax - xmin);=0;=(ClientSize. Height - hf)/2;=ClientSize. Width;=(ClientSize. Height + hf)/2;
}
{= ClientSize. Height;=(xmax - xmin) * hf/(ymax - ymin);=(ClientSize. Width - wf)/2;=0;=(ClientSize. Width + wf)/2;=ClientSize. Height;
}=(c - a)/(xmax - xmin + 2 * dx);=(b - d)/(ymax - ymin + 2 * dy);=a - ax * (xmin - dx);= b - ay * (ymax + dy) ;. Transform=new Matrix (ax, 0, 0, ay, bx, by); hline=(xmax - xmin) * 0.001f; blackPen=new Pen (Color. Black, hline); bluePen=new Pen (Color. Blue, hline) ;. DrawLine (bluePen, xmin, 0, xmax, 0) ;. DrawLine (bluePen, 0, ymin, 0, ymax);=fimin; (fi lt;=fimax)
{. DrawLine (blackPen, (float) (F (fi) * Math. Cos (fi)), (float) (F (fi) * Math. Sin (fi)), (float) (F (fi + h) * Math. Cos (fi + h)), (float) (F (fi + h) * Math. Sin (fi + h)));=fi + h;
}=fimin; (fi lt;=fimax)
{= (float) (F (fi) * Math. Cos (fi));=(float) (F (fi) * Math. Sin (fi));=(float) (F (fi + h ) * Math. Cos (fi + h));=(float) (F (fi + h) * Math. Sin (fi + h)) ;. DrawLine (blackPen, transX (x, y, Alfa, tx, s), transY (x, y, Alfa, ty, s), transX (x2, y2, Alfa, tx, s), transY (x2, y2, Alfa , ty, s));=fi + h;
}
} float F (float fi)
{3 * (1 + (float) (Math. Cos (fi)));
} void Form1_Resize (object sender, EventArgs e)
{();
}
}
}
Малюнок 2.1 Реалізація програми, яка демонструє перетворення двовимірних координат
. Метод сканує рядки
Задача: Розробити алгоритм і написати програму, що демонструє метод сканує рядки для зафарбовування трикутних областей [2].
Рішення:
Клас:
using System; System. Collections. Generic; System. Linq; System. Text; System. Drawing; System. Drawing. Drawing2D; System. Collections; Laba3
{FillTriangle
{void Fill (Graphics g, int [] x, int [] y, int [] rgb)
{maxy, miny;=y [0];=maxy; (y [1] gt; maxy) maxy=y [1]; (y [2] gt; maxy) maxy=y [2]; ( y [1] lt; miny) miny=y [1]; (y [2] lt; miny) miny=y [2]; t; mas=new ArrayList (); myP...