1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
| namespace Свой_график
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Graphics g = pgraf.CreateGraphics();
Pen pen = new Pen(Color.Black);
double xmin, xmax, ymin, ymax, x, y;
int xgmin, xgmax, ygmin, ygmax, xg, yg;
xmin = -2 * Math.PI;
xmax = 2 * Math.PI;
ymin = -2;
ymax = 2;
xgmin = 0;
xgmax = pgraf.Width - 30;
ygmin = pgraf.Height - 30;
ygmax = 0;
g.Clear(Color.White);
// ось OX
x = xmin;
xg = xgmin + (int)((xgmax - xgmin) / (xmax - xmin) * (-2 * Math.PI - xmin)); // графическая абсцисса начальной точки оси OX
yg = ygmin + (int)((ygmax - ygmin) / (ymax - ymin) * (0 - ymin)); // графическая ордината начальной и конечной точки оси OX
int xg2 = xgmin + (int)((xgmax - xgmin) / (xmax - xmin) * (2 * Math.PI - xmin)); // графическая абсцисса конечной точки оси OX
g.DrawLine(pen, xg, yg, xg2, yg);
// деление на оси по OX
while (x <= xmax)
{
xg = xgmin + (int)((xgmax - xgmin) / (xmax - xmin) * (x - xmin));
g.DrawLine(pen, xg, yg - 6, xg, yg + 6);
switch ((int)(x / Math.PI))
{
case 0: g.DrawString("0", new Font("Times", 14), Brushes.Black, xg, yg + 10);
break;
case 1: g.DrawString("\u03C0", new Font("Times", 14), Brushes.Black, xg, yg + 10);
break;
case -1: g.DrawString("-" + "\u03C0", new Font("Times", 14), Brushes.Black, xg, yg + 10);
break;
default: g.DrawString(((int)(x / Math.PI)).ToString() + "\u03C0", new Font("Times", 14), Brushes.Black, xg, yg + 10);
break;
}
x += Math.PI;
}
// Ось OY
xg = xgmin + (int)((xgmax - xgmin) / (xmax - xmin) * (0 - xmin));// графическая абсцисса начальной и окнечной точки оси OY
yg = ygmin + (int)((ygmax - ygmin) / (ymax - ymin) * (-2 - ymin));
int yg2 = ygmin + (int)((ygmax - ygmin) / (ymax - ymin) * (2 - ymin));
g.DrawLine(pen, xg, yg, xg, yg2);
// деление оси OY
y = ymin;
while (y <= ymax)
{
yg = ygmin + (int)((ygmax - ygmin) / (ymax - ymin) * (y - ymin));
g.DrawLine(pen, xg - 6, yg, xg + 6, yg);
if (y != 0)
{
g.DrawString(y.ToString(), new Font("Times", 14), Brushes.Black, xg + 10, yg);
}
y++;
}
// строим график
x = xmin;
while (x <= xmax)
{
y = 1/Math.Sin(x);
xg = xgmin + (int)((xgmax - xgmin) / (xmax - xmin) * (x - xmin));
yg = ygmin + (int)((ygmax - ygmin) / (ymax - ymin) * (y - ymin));
g.FillEllipse(Brushes.Red, (float)(xg-1 ), (float)(yg-1 ), 1, 1);
x += (xmax - xmin) / 900;
}
}
}
} |