арового ефекту
Проект розроблений в Visual Basic 7.0 [3]. Програмне забезпечення для гнучкості складається з трьох модулів: - модуль графічного інтерфейсу і управління, розрахунку; - модуль, що працює з 3Д світом; - модуль для відображення растрових даних.
Основна програма знаходиться в модулі model. Це дозволяє змінювати, інші модулі не зачіпаючи основний, а так само спрощує додавання нових функцій, зміна старих, налаштування програми. У модуль model можна легко додати нові можливості, пункти в меню і функціональні елементи, відповідні даному пункту. А так само можливість створення інших модулів.
.1 Основний алгоритм програми, модулирующий муаровий ефект
Послідовність дій:
Створюємо робочий растр із заданим кутом повороту навколо центру растра і кроком ліній. Цей пункт виконується викликом функцій CreatLine (ByVal TResol As Byte, ByRef Mas2D (,) As Byte, ByVal Stp As Integer, ByVal Pix4 As Integer, ByVal Alpha As Single), де:
TResol - вибір роздільної здатності, відповідає елементам масивів fWidth () і fHeight (), поточний дозвіл зберігається в нульовий комірці; D (,) - двомірний вихідний масив, об'єктний растр; - крок растра; - довжина крок чорних смуг, в поточному проекті Pix4=Stp / 2; - кут повороту задається в градусах.
Потім дані з масиву зберігається в bmp-файлі за допомогою процедури SaveToFile (ByVal TResol As Byte, ByVal Mas2D (,) As Byte, ByVal FName As String), де: - вибір роздільної здатності; D ( ,) - двомірний масив, є вхідним параметром, об'єктний растр; - мінлива містить ім'я файлу, в який необхідно зберегти.
Накладаємо його на об'єкт з позиції проектора. Перед цим використовуючи процедуру Camera () отримуємо растр з урахуванням спотворень. Процедура має наступні параметри Camera (ByVal TResol As Byte, ByVal Mas2D (,) As Byte, ByRef MasCam (,) As Byte, ByVal h As Integer), де:
Mas2D (,) - двомірний масив, є вхідним параметром, об'єктний растр; (,) - двомірний масив, є вихідним параметром, растр з урахуванням спотворень; - відстань від проектора до поверхні.
Так само дані з MasCam (,) зберігаються в bmp-файл, процедурою SaveToFile (). Після чого змінну NewRast встановлюємо в положення True, це означає, що модуль rendering має прийняти новий робочий растр і накласти його на об'єкт (поверхня). Поверхня створюється, процедурою CreateVertexBuffer (ByVal sender As Object), де sender - це об'єкт VertexBuffer (набір вершин примітивів).
Знімаємо камерою утворилися лінії. Для цього передаємо управління модулю rendering, за допомогою змінної createcameraview=True. Модуль rendering встановлює вид з позиції камери і, використовуючи відповідну команду Direct3D.SurfaceLoader.Save (), зберігаємо вміст шару (видима частина) у файл з розширенням bmp.
Створюємо уявний растр із заданим кутом, кроком і зняття його на камеру в площині перпендикулярній оптичної осі проектора. Цей пункт аналогічний першому етапу, тільки вхідні і вихідні дані відносяться до уявному растру. Після створення файла з уявним растром необхідно передати модулю rendering необхідність змоделювати його, це робиться за допомогою змінних createcameraviewM=True і операцій аналогічних пункту 3. Результат отримуємо bmp-файл з етало...