Листинг 38.1. Код выше и в теле процедуры Form1_Load.
'Вводим функцию для изображаемой поверхности z = f(x, y):
Public Function f(ByVal x As Double, ByVal y As Double) _
As Double
'Параметры поверхности z = f(x, y)для эллипсоида:
Dim a As Double = 1.03
Dim b As Double = 1.02
Dim c As Double = 1.01
'Уравнение поверхности z = f(x, y) в виде эллипсоида:
f = Sqrt(c * c * (200 - x * x / (a * a) - _
y * y / (b * b)))
End Function
'Точка наблюдения:
Private myEye As myClassPoint3D
'Концы числового интервала области задания поверхности:
Private Const x_max As Integer = 20
Private Const y_max As Integer = 20
Private Const x_min As Integer = -10
Private Const y_min As Integer = -10
'Массив узловых точек:
Private Points(x_max, y_max) As myClassPoint3D
'Точки на осях координат:
Private Axes(3) As myClassPoint3D
'Загрузка данных и их инициализация:
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As EventArgs) Handles MyBase.Load
'Задаем координаты точки наблюдения:
myEye = New myClassPoint3D(40, 20, 20)
'Объявляем координаты точки:
Dim x, y, z As Double : Dim i, j As Integer
'В каждом (i,j)-м узле плоскости x,y
'рассчитываем координату z точки поверхности z = f(x, y):
For i = 0 To x_max
x = i + x_min
For j = 0 To y_max
y = j + y_min
'Координата z точек поверхности z = f(x, y):
z = f(x, y)
Points(i, j) = New myClassPoint3D(x, y, z)
Next
Next
'Инициализация осей (axes) координат:
Axes(0) = New myClassPoint3D(0, 0, 0) 'Начало коорд-т.
Axes(1) = New myClassPoint3D(30, 0, 0) 'Ось (axis) x.
Axes(2) = New myClassPoint3D(0, 30, 0) 'Ось y.
Axes(3) = New myClassPoint3D(0, 0, 30) 'Ось z.