й млинів
Model modelMel-модель мельніциmodelLop - модель лопастіviewMatrix - матриця наблюдателяprojectionMatrix - матриця проекції D e - текстура фону: стени1D n - текстура фону: стени2D s - текстура фону: стени3D w - текстура фону: стени4D up - текстура фону: небо [] e1; - масив координат вершин з координатами текстур, що описують позицію стін і неба, навколо мельніциind - мінлива побудови текстури навколо мельніциindz - мінлива побудови координат текстури навколо мельніциb - коробка навколо нашого будинку d1 - перетин пострілом (променем) коробки домаd2 - перетин наближенням коробки будинку
Розробка об'єктів сцени
На сцені розташовано 4 однакових млина. Для кожного млина мається лопать, яка обертається. Крім цього на сцені розташований куб, який представляє собою візуалізацію простору. p> Розмір моделі В«МельницаВ» має розмір 1920 * 1080 пікселів
Розмір моделі В«ЛопатаВ» має розмір 1920 * 1080 пікселів
Малювання млини й лопати здійснюється в методі Draw.
В
Рис.1. Модель В«Млин по осі Z, YВ»
Рис.2. Модель В«Лопата по осі Z, YВ»
Для візуалізації простору використовується куб розміром сторони 30 м. Кожна сторона куба предствлена ​​2 трикутниками. На сторони куба накладені текстури стени1 (sahara_east.bmp, розміром - 1024 * 1024пікселов), стени2 (sahara_north.bmp, розміром - 1024 * 1024пікселов), стени3 (sahara_south.bmp, розміром - 1024 * 1024пікселов), стени3 (sahara_north.bmp, розміром - 1024 * 1024пікселов) і неба (sahara_up.bmp, розміром - 1024 * 1024пікселов).
Текстура стіни представлена ​​на рис. 3, рис. 4 рис. 5, рис. 7. br/>В
Текстура неба представлена ​​на рис. 6. br/>
Алгоритм руху
В· рух спостерігача
Для опису положення спостерігача використовується матриця 4 * 4 viewMatrix. У Update відбувається зміна матриці відповідно до дій користувача. При натисканні на клавішу E відбувається поворот спостерігача навколо осі Y. Для цього відбувається множення поточної матриці viewMatrix на матрицю повороту
R y ? = ,
де ? = 0.1 радий.
При натисканні на клавішу Up відбувається переміщення вперед, тобто вздовж осі Z. Для цього відбувається множення поточної матриці viewMatrix на матрицю переміщення
T = , де d z = 0.1рад.
При натисканні на кла...