Розглянемо алгоритм взаємодії вищеописаних процедур і функцій. Процедура "ПоказатьСцену" викликається кожного разу при зміні зображення сцени, дана процедура містить у своєму тілі основну процедуру програми "ПостроеніеСцени". Процедура "ПостроеніеСцени" крім своїх наборів дій складається з функції: "СортіровкаГраней" і функції "ВичісленіеНормалі". Функція "СортіровкаГраней" включає в собі метод "Flag". Умовна схема взаємодії процедур і функцій представлено на малюнку 2. br/>В
Рисунок 2 - Умовна схема взаємодії процедур і функцій
4. Тестування програми
4.1 Опис інтерфейсу
При запуску програми користувач відразу бачить сцену: стакан і куб перед ним (малюнок 3).
В
Рисунок 3 - Інтерфейс програми
Програма має інтуїтивно зрозумілий інтерфейс, те, що було заявлено, то й вийшло - два об'єкти: прозорий об'єкт (стакан) і непрозорий (куб). олучение нормалей до перших 19 гранях склянки
for (int i = 0; i <19; i + +)
{= View [i]. y * (View [i + 20]. z - View [i + 21]. z) + View [i + 20]. y * (View [i + 21]. z - View [i]. z) + View [i + 21]. y * (View [i]. z - View [i + 20]. z); = View [i]. z * (View [i + 20]. x - View [i + 21]. x) + View [i + 20]. z * (View [i + 21]. x - View [i]. x) + View [i + 21]. z * (View [i]. x - View [i + 20]. x); = View [i]. x * (View [i + 20]. y - View [i + 21]. y) + View [i + 20]. x * (View [i + 21]. y - View [i]. y) + View [i + 21]. x * (View [i]. y - View [i + 20]. y); [i] = nz/Math. Sqrt (nz * nz + ny * ny + nx * nx);
}
// Нормаль до 19-ї грані (не піддається циклу)
nx = View [19]. y * (View [39]. z - View [20]. z) + View [39]. y * (View [20]. z - View [19]. z) + View [20]. y * (View [19]. z - View [39]. z); = View [19]. z * (View [39]. x - View [20]. x) + View [39]. z * (View [20]. x - View [19]. x) + View [20]. z * (View [19]. x - View [39]. x); = View [19]. x * (View [39]. y - View [20]. y) + View [39]. x * (View [20]. y - View [19]. y) + View [20]. x * (View [19]. y - View [39]. y); [19] = nz/Math. Sqrt (nz * nz + ny * ny + nx * nx);
// Нормаль до грані (підстава склянки), грань має 10 вершин, взято 3 (0, 10, 19)
nx = View [0]. y * (View [10]. z - View [19]. z) + View [10]. y * (View [19]. z - View [0]. z) + View [19]. y * (View [0]. z - View [10]. z); = View [0]. z * (View [10]. x - View [19]. x) + View [10]. z * (View [19]. x - View [0]. x) + View [19]. z * (View [0]. x - View [10]. x); = View [0]. x * (View [10]. y - View [19]. y) + View [10]. x * (View [19]. y - View [0]. y) + View [19]. x * (View [0]. y - View [10]. y); [20] = nz/Math. Sqrt (nz * nz + ny * ny + nx * nx);