Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по учебной практике.doc
Скачиваний:
5
Добавлен:
27.09.2019
Размер:
565.76 Кб
Скачать

3.3. Проектирование программного средства.

Базовая архитектура программного средства формируется на основании базовых классов предметной области, описанных в предыдущем разделе. На основании базовой архитектуры и требований к программному средству была спроектирована обобщённая диаграмма классов, представленная на рисунке 6.

Рис. 6. Обобщённая диаграмма классов.

4. Реализация

Исходный текст программного обеспечения изложен в ПРИЛОЖЕНИИ А.Так как приложение состоит из нескольких форм то ниже представлена схема взаимодействия программы (рис. 7).

Рис. 7. Схема взаимодействия программ

5. Схема программы

1.Схема процедуры TSurface.transfer (var Xw, Yw, Zw: array of real; m, n, l: integer). См. рис. 8.

Рис. 8. Схема процедуры аффинного преобразования переноса

программы.

2. Схема процедуры TSurface.world. См. рис. 9.

Рис. 9. Схема процедуры вычисления мировых координат вершин полусферы.

6. Тестирование программы

При разработке и отладке программы мною использовались следующие варианты тестирования:

  1. Проверка корректности создаваемой 3D-модели поверхности. Она осуществлялась путём внесения изменений в формулу, описывающую её.

  2. Проверка корректности 3D аффинных преобразований.

  3. Проверка функционирования программы в исключительных ситуациях.

Поскольку с самого начала разработки был предусмотрен графический вывод как объекта, так и интерфейса, то это существенно облегчило тестирование: все дефекты наглядно отображались на экране.

Тест №1

Цель: проверить корректность создаваемой 3D-модели объекта - каркаса поверхности.

Ожидаемый результат: визуализация корректной геометрической 3D-модели.

Методика тестирования: «белый (прозрачный) ящик», т.к. тестируется программный код, и изменение по результатам тестирования также вносятся в программный код.

Объект тестирования: геометрическая модель 3D-поверхности ( полусферы), первоначально описываемая в программе следующими формулами:

Xw[k] := Ny / Radius * j * cos(2 * pi / Nx * i);

Yw[k] := Ny / Radius * j * sin(2 * pi / Nx * i);

Zw[k] := sqrt(abs(sqr(Radius) - sqr(Xw[k]) - sqr(Yw[k])));

Полученный результат: установлена некорректность первоначальной геометрической модели, а именно вместо полусферы получена «корзина» с полусферическим «дном» (см. Рис 10). Причина заключается в том, что происходит неправильная инициализация координат вследствие ошибки в формуле. На основе анализа разработан правильный вариант геометрической модели в виде следующих формул:

Xw[k] := Radius/Ny*j*cos(2*pi/Nx*i);

Yw[k] := Radius/Ny*j*sin(2*pi/Nx*i);

Zw[k] := sqrt(abs(sqr(Radius)-sqr(Xw[k])-sqr(Yw[k])));

На Рис.11 представлена исправленная модель.

Рис.10. Визуализация некорректной модели полусферы.

Рис. 11. Модель после корректировки по результатам теста №1.

Тест №2

Цель: проверить корректности 3D аффинных преобразований.

Ожидаемый результат: визуализация корректных аффинных преобразований.

Методика тестирования: «белый (прозрачный) ящик».

Объект тестирования: матричные 3D-преобразования координат исходной модели.

Полученный результат:

Установлены некорректности реализации матричных преобразований вращений вокруг осей, а именно искажение формы каркаса поверхности при вращении. См. рис. 12. Устранение этих некорректностей выходит за пределы данной работы.

Установлены корректности реализации матричных преобразований переноса, симметрии и масштабирования.