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


         

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


        DesigningLine(C, H, -A, -D, -H, -B)

        Icosahedron_last = NumLines

    End Sub

    Public Structure Line

        'Массивы для соединения точек (points):

        <VBFixedArray(4)> Dim fr_points() As Single

        <VBFixedArray(4)> Dim to_points() As Single

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

        '(transformed points):

        <VBFixedArray(4)> Dim fr_tr_points() As Single

        <VBFixedArray(4)> Dim to_tr_points() As Single

        Public Sub Initialize()

            ReDim fr_points(4) : ReDim to_points(4)

            ReDim fr_tr_points(4) : ReDim to_tr_points(4)

        End Sub

    End Structure

'Объявляем массив Lines структуры Line (создавать массив

'из изменяемого количества элементов и инициализировать его 'при помощи оператора ReDim мы будем ниже):

    Public Lines() As Line

'Объявляем и инициализируем переменную для индекса массива:

    Public NumLines As Integer

    'Проектируем линию между точками (x1,y1,z1),(x2,y2,z2):

    Public Sub DesigningLine(ByVal x1 As Single, _

    ByVal y1 As Single, ByVal z1 As Single, ByVal x2 As Single, _

    ByVal y2 As Single, ByVal z2 As Single)

        NumLines = NumLines + 1

    'Создаем массив Lines структуры Line из изменяемого

    'количества элементов NumLines, инициализируем его

    'оператором ReDim и при помощи ключевого слова Preserve

        'сохраняем предыдущие данные массива:

        ReDim Preserve Lines(NumLines)

        'Инициализируем и рассчитываем массивы:

        Lines(NumLines).Initialize()

        Lines(NumLines).fr_points(1) = x1

        Lines(NumLines).fr_points(2) = y1

        Lines(NumLines).fr_points(3) = z1

        Lines(NumLines).fr_points(4) = 1

        Lines(NumLines).to_points(1) = x2

        Lines(NumLines).to_points(2) = y2

        Lines(NumLines).to_points(3) = z2

        Lines(NumLines).to_points(4) = 1

    End Sub

    'Применяем матрицу переноса (translation matrix)

    'ко всем линиям, используя MatrixApplyFull.




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