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


Программа Астероиды с использованием матриц - часть 2


} // конец функции ///////////////////////////////////////////////////////

void Clear_Matrix(matrix_ptr m) {

// функция формирует нулевую матрицу

m->е1еm[0][0] = m->elem[l][1] = m->е1еm[2][2] = 0;

m->elem[0][1] = m->elem[l] [0] = m->е1еm[1] [2] = 0;

m->elem[2][0] = m->elem[0] [2] = m->elem[2][1] = 0;

} // конец

функции

///////////////////////////////////////////////////////

void Mat_Mul (vertex_ptr v, matrix_ptr m)

{

 // функция выполняет умножение матрицы 1х3 на матрицу 3х3

// элемента. Для скорости каждое действие определяется "вручную",

// без использования циклов. Результат операции - матрица 1х3

float x new, у

new;

x_new=v->p[0]*m->elem[0][0] + v->p[1]*m->elem[1][0] + m->elem[2][0];

y_new=v->p[0]*m->elem[0][1] + v->p[1]*m->elem[1][1] + m->elem[2][1];

// N_COMP - всегда единица

v->p[X_COMP] = x_new;

v->p[Y_COMP] = y_new;

} // конец

функции

///////////////////////////////////////////////////////

void Scale_Object_Mat(object_ptr obj)

{

// функция выполняет масштабирование объекта путем умножения на

// матрицу масштабирования

int index;

for (index=0; index<obj->num_vertices; index++)

{

Mat_Mul ((vertex_ptr) &obj->vertices [index],

(matrix_ptr)&obj->scale) ;

} // конец цикла for

} // конец функции

///////////////////////////////////////////////////////

Rotate_Object_Mat(object_ptr obj)

{

// функция выполняет.поворот объекта путем умножения на

// матрицу поворота

int index;

for (index=0; index<obj->num_yertices; index++)

{

Mat_Mul((vertex_ptr)&obj->vertices[index],(matrix_ptr)&obj->rotation) ;

} // конец цикла for

} // конец функции ///////////////////////////////////////////////////////

void Create_Field(void)

{      

int index;

float angle,c,s;

// эта функция создает поле астероидов

for (index=0; index<NUM_ASTEROIDS; index++)

{

asteroids[index].num vertices = 6;

asteroids [index] .color        = 1 + rand() % 14; //астероиды




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