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


         

Глава Изображение и управление - часть 7


Листинг 38.5. Два новых класса.

'Вводим класс с методами преобразования систем координат

'в трехмерном пространстве:

Public Class myClassPoint3D

    'Массив из 4-х элементов для первоначальных координат

    '(original coordinates); нулевой индекс используем:

    Public orig_coord(3) As Double

    'Массив для преобразованных координат

    '(transformed coordinates):

    Public trans_coord(3) As Double

    'Создаем новый неинициализированный вектор:

    Public Sub New()

    End Sub

    'Создаем новый инициализированный вектор:

    Public Sub New(ByVal x As Double, ByVal y As Double, _

    ByVal z As Double, Optional ByVal myScale As Double = 1)

        orig_coord(0) = x

        orig_coord(1) = y

        orig_coord(2) = z

        orig_coord(3) = myScale

    End Sub

    'Матрица преобразования (transformation matrix):

    Public Function Transformation( _

    ByVal matrix As myClassMatrix3D, _

    Optional ByVal normalize As Boolean = True) _

    As myClassPoint3D

        Dim value As Double

        Dim result As New myClassPoint3D

        For i As Integer = 0 To 3

            value = 0

            For j As Integer = 0 To 3

                value = value + _

                        orig_coord(j) * matrix.M(j, i)

            Next

            trans_coord(i) = value

        Next

        'Повторно нормализуем точку:

        If normalize Then

            'После выхода из цикла value = trans_coord(3):

            trans_coord(0) = trans_coord(0) / value

            trans_coord(1) = trans_coord(1) / value

            trans_coord(2) = trans_coord(2) / value

            trans_coord(3) = 1

        End If

    End Function

End Class

'Вводим класс с методами преобразования координат точки

'в трехмерном пространстве:

Public Class myClassMatrix3D

    'Матрица (matrix) в виде массива размера 4x4:

    Public M(3, 3) As Double

    'Создаем новую неинициализированную матрицу:

    Public Sub New()

    End Sub

    'Создаем новую инициализированную матрицу:




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