Программирование игр для Windows. Советы профессионала


Точки, линии, многоугольники и объекты в трехмерном пространстве - часть 2


Листинг 6.2. Определение трехмерного многоугольника.

 

// структура, описывающая многоугольник

typedef struct polygon_typ

{

int num_vertices;                 // число

вершин

vertices[MAX VERTICES];           // координаты

вершин

int color;                        // цвет многоугольника

}polygon, *polygon_ptr;

Как можно заметить, в структуре описаны вершины и цвета. Эти составляющие необходимы для правильного отображения. Теперь, когда у нас есть структура, описывающая многоугольник, следующим шагом будет определение объекта на основе многоугольников. На рисунке 6.3 продемонстрирован один из таких объектов.

Теперь мы можем добавить еще один уровень к нашему описанию. Объект - это набор многоугольников. Создадим структуру, которая бы поддерживала эту концепцию:

Листинг 6.3. Описание трехмерного объекта на основе многоугольников.

// структура, описывающая объект

typedef struct object_typ

{

int num_faces;             // число

граней

polygon faces[max_faces]; // грани, представленные многоугольниками

float xo,yo,zo;            // координаты объекта в пространстве

int visible;               // виден ли объект на экране?

} object, *object_ptr;                                              

Структура данных в Листинге 6.3 описывает объект, который образован , множеством многоугольников или поверхностей. Используя эти структуры данных и определения, мы можем создать несколько трехмерных объектов: космический корабль, планету и окружающее космическое пространство.

Чтобы поместить объекты в трехмерное пространство, мы должны знать их пространственное расположение. То есть мы должны определить значения хо, уо и zo для каждого предмета. Так же, как и в случае с двухмерными объектами (которые мы уже обсуждали в четвертой главе), пространственные объекты мы будем определять в собственных локальных системах координат (0,0,0). Затем, когда мы будем перемещать объект, мы его просто переведем в конечную позицию.

Для наших структур это будет точка (xo,yo,zo).


Начало  Назад  Вперед



Книжный магазин