End Sub
Чтобы мы могли рисовать заданную поверхность и оси координат внутри графического элемента PictureBox, в окне Class Name выбираем PictureBox1, а в окне Method Name выбираем Paint. Появляется файл Form1.vb с шаблоном (процедуры PictureBox1_Paint), который после записи нашего кода принимает такой вид.
Листинг 38.2. Метод PictureBox1_Paint для рисования поверхности.
Private Sub PictureBox1_Paint(ByVal sender As Object, _
ByVal e As System.Windows.Forms.PaintEventArgs) _
Handles PictureBox1.Paint
'Масштабируем все графические объекты на PictureBox1.
'Коэффициенты масштабирования:
Dim M_1 As Single = 29
Dim M_2 As Single = 31
e.Graphics.ScaleTransform( _
PictureBox1.Size.Width / M_1, _
-PictureBox1.Size.Height / M_2, _
MatrixOrder.Append)
Dim M_3 As Single = 2
Dim M_4 As Single = 2
e.Graphics.TranslateTransform( _
PictureBox1.Size.Width / M_3, _
PictureBox1.Size.Height / M_4, _
MatrixOrder.Append)
'Задавая M_1, M_2, M_3, M_4 другие значения,
'мы будем смещать поверхность по отношению к осям x,y,z.
'Матрица преобразования (transformation matrix):
Dim tr As myClassMatrix3D = CalculateTransformation()
'Применяем матрицу преобразования к точкам:
For x As Integer = 0 To x_max
For y As Integer = 0 To y_max
Points(x, y).Transformation(tr)
Next
Next
'Объявляем индексы элементов массива myArrayVB(i, j):
Dim i, j As Integer
'Задаем границы индексов массива myArrayVB(i, j):
Dim N_x As Integer = 2000
Dim N_y As Integer = 1
'Задаем массив myArrayVB(i, j)переменных типа Single,
'когда i = 0,1,2,3,...,N_x; j = 0,1,2,3,...,N_y:
Dim myArrayVB(N_x, N_y) As Single
'Первая, вторая и третья границы массива, разделяющие
'линии поверхности, параллельные xz, yz, и оси:
Dim N_1_myArrayVB, N_2_myArrayVB, _