Компьютерная графика, мультимедиа и игры на Visual C#


         

Глава Изображение и управление


Листинг 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.




Содержание  Назад  Вперед