Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт_АОСКГ.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
210 Кб
Скачать
☆

1.2.Содержательная постановка задачи

Дан отрезок ОВ, ось и задан угол поворота α. Необходимо, основываясь на исходных данных, построить единую матрицу преобразований для поворота изображения на заданный угол относительно отрезка ОВ. Использовать при вычислениях матрицы поворота Mx(α), My(α), My(α), а также матрицы с промежуточными вычислениями.

2.Практическая часть

2.1.Алгоритм

Данная задача решается простым алгоритмом, описываемым следующими пунктами:

  • шаг1. Смещение заданного отрезка к началу координат;

  • шаг2. Поворот отрезка таким образом, чтобы он совпал с одной из плоскостей, содержащих заданную ось. Данный пункт подразумевает следующие действия:

  1. Нахождение длины гипотенузы (Согласно теореме Пифагора), которая является проекцией отрезка на плоскость;

  2. Вычисление косинуса и синуса угла между отрезком и плоскостью;

  3. Заполнение матрицы поворота по оси (1), (2) или (3) полученными значениями косинуса и синуса;

  4. Непосредственно, поворот отрезка (Путем умножения его точки, не лежащей в начале координат, на матрицу поворота).

  • шаг3. Поворот отрезка по второй плоскости, содержащей заданную ось (Аналогично шагу 2);

  • шаг4. Обработка промежуточных данных для получения единой матрицы преобразований.

2.2.Программная реализация

Алгоритм был реализован в среде разработки MS Visual Studio 2008, в виду наличия хороших библиотек для работы с графикой.

Программа была реализована как приложение Windows Forms. А её дизайн был выполнен в интуитивно понятном стиле, с применением таких компонентов среды разработки, как:

  • tabControl – элемент управления, который используется для отображения нескольких вкладок, аналогичных разделителям в записной книжке (в данном случае элемент использовался для разделения областей расчёта и построения графика);

  • textbox – текстовое поле для приёма данных (например, для ввода координат и величины угла вращения);

  • radioButton – элемент управления, обеспечивающий выбор из двух или более взаимоисключающих вариантов (в данном случае для выбора основной оси для расчёта);

  • listBox – элемент управления, отображающий список элементов, в котором можно выбрать один или несколько элементов (используется в программе для вывода результата вычислений);

  • button – элемент управления, позволяющий взаимодействовать с программой;

  • pictureBox – элемент управления, позволяющий отображать графику (в данном случае – отображать график);

  • label – элемент – заметка, позволяющий давать краткое пояснение к другим элементам.

Ниже приведены скриншоты интерфейса программы.

Рисунок 1-расчётная область

Рисунок 2-Область графического отображения

2.3.Пример 1

Для проверки правильности работы программной реализации алгоритма необходимо решить пример вручную, решить его в программе, затем сравнить результат.

В качестве исходных данных используются: Отрезок (2;3;1;)-(6;9;4) Ось OX Угол 30°

Переместим отрезок в начало координат, умножив его на инцидентную матрицу . Получим новые координаты отрезка: (0;0;0;1)-(4;6;3;1).

Далее, повернем отрезок так, чтобы он совпал с осью OX. Для этого повернем его два раза – сначала так, чтобы он совпал с плоскостью XOZ, а затем так, чтобы он совпал с плоскостью XOY.

Для первого поворота необходимо найти синус и косинус угла, выводимые из следующих отношений: Y 6 β O 3 Z Теперь умножим матрицу, соответствующую конечной точке на вычисленную матрицу и получим координату отрезка после поворота. .

Проводя аналогичные вычисления, совместим отрезок с осью OX, вращая его вокруг OY: z 6.7 β 0 4 x Умножив эту матрицу на конец отрезка, получим новое его положение:

Составим матрицу поворота вокруг оси OX на 30°.

.

Составим матрицы M5, M6, M7 обратные M3, M2, M1 соответственно.

Составим супер-матрицу, равную произведению M1*M2*M3*M4*M5*M6*M7:

Для поворота любой точки необходимо умножить матрицу, соответствующую данной точке на супер-матрицу.