Описание упакованных и скалярных данных
Описание ХММ-данных в приложении обычно производится в одном из двух форматов:
Описание точек изображения в трехмерном пространстве принято задавать в виде четырехмерного вектора (x.y.z.w). Это связано с тем, что проективные преобразования, необходимые для показа изображения с различных точек зрения, наиболее просто описываются матрицами 4x4. Используя перечисленные выше форматы задания ХММ-данных, совокупность точек в трехмерном пространстве можно описать двумя способами:
point 3D struc х del 0.0 у dd 0.0 z dd 0.0 w dd 0.0
ends .data pi point_3D 4 dup (<>) ;описание пирамиды массивом структур.
;каждая из которых описывает одну из 4 вершин
pri sm_point_3Dstruc x dd 4 dup (0.0) у dd 4 dup (0.0) z dd 4 dup (0.0) w dd 4 dup (0.0)
ends .data prism prism_point_3D<> структура, описывающая треугольную пирамиду (4 вершины)
Приведенные выше примеры описания пирамиды иллюстрирует Рисунок 10.1.
Рисунок 10.1. Расположение в памяти описания вершин пирамиды
В большинстве приложений используется первый способ представления ХММ-данных, хотя он считается и менее эффективным. При необходимости можно произвести преобразование представления данных из одного способа в другой. Вариант такого преобразования показан в программе ниже.
;рrg10 01.asm - программа преобразования представления ХММ-данных :из одного способа представления в другой.
prizm struc
union
struc структура, описывающая треугольную пирамиду (1 способ)
xyzwl dd 0.0
xyzw2 dd 0.0
xyzw3 dd 0.0
xyzw4 dd 0.0
ends
struc структура, описывающая треугольную пирамиду (2 способ) х dd 4 dup (0.0) у dd 4 dup (0.0) z dd 4 dup (0.0) w dd 4 dup (0.0)
ends
ends ;конец объединения
ends .data
prizm_l prizm <> :экземпляр объединения .code