Моделирование поверхностей в системе
компьютерной математики MathCAD
Дубанов А. А.
Введение
Многие инженерные задачи
связаны с конструированием, кинематикой и анимацией поверхностей. В том числе и
поверхностей, где присутствуют элементы вращения. В этой связи, разработчики
вынуждены вникать в пространственные задачи преобразования поверхностей, что не
является их непосредственной функцией. Данная статья не претендует на
универсальность подхода к решению моделирования поверхностей вращения, но
иллюстрирует, что при сложности поставленной задачи, некоторые моменты можно
наглядно продемонстрировать в системах компьютерной математики (в данном случае
MathCAD 11).
1. Вращение параметрической кривой
вокруг
прямой, произвольно расположенной в
пространстве.
Рассмотрим простую
задачу: получить уравнение поверхности вращения произвольной параметрической
кривой вокруг прямой, произвольно расположенной в пространстве. Вращаемая
параметрическая кривая задана в виде: . Ось вращения задана двумя точками
и
(Рис. 1). Основанием
перпендикуляра, опущенным из точки
на прямую
, будет точка
. Определим локальный базис для каждой отдельной точки
. Это будет тройка векторов
с центром координат в
точке
, где:
,
,
. Если мы захотим вращать точку
вокруг точки
в системе координат
, то это будет плоская окружность
.
Рис. 1
Перенос окружности в
систему координат и вращение
непосредственно вокруг точки
осуществляется
следующим образом:
. Базис
рассчитывается по
формулам:
,
,
, так векторы
будут выглядеть из
системы координат
. Базисные векторы
системы координат
(Рис.1) имеют значения
,
,
. Более подробно вопросы преобразования базиса рассмотрены на
Интернет-ресурсе http://dubanov.exponenta.ru/russian/book_rus.htm во вкладке «Преобразование базиса».
Ниже приведен листинг программы,
выполненной в системе MathCAD 11.
|
Входные данные: ось вращения и
вращаемая кривая. В программном коде для получения корректного результата
рекомендуется производить изменения значений только этих параметров |
|
Рассчитывается основание перпендикуляра |
|
Локальный базис |
|
Базисные векторы |
|
Базис |
|
Вращаемая точка |
|
Та же окружность, представленная в
системе координат |
|
Прямая |
|
Результат построения поверхности
вращения кривой |
2. Вращение одной параметрической
кривой вокруг другой.
Вращение производится в плоскости
перпендикуляра, опущенного из точек
вращаемой кривой на другую.
Пусть является вращаемой
кривой (Рис. 2). Рассмотрим кривую
. Из точек кривой
опустим перпендикуляр
на кривую
.
Рис. 2
Соответствие между
параметрами и
происходит из
уравнения
. Следует отметить, что далеко не всегда можно получить
аналитическую зависимость
. Решение данного уравнения в численном виде будем искать
следующим образом. Скалярное уравнение
продифференцируем по
параметру
, предполагая, что существует зависимость
,
. Откуда имеем исходные данные для постановки задачи Коши
, начальные условия
и
получаем из решения
уравнения
любым известным
способом.
Таким образом, будем
считать, что нами найдена функциональная зависимость параметра от параметра
. В точке кривой
, соответственной точке кривой
, сформируем локальный базис
, где:
,
,
. Далее можно поступить так, как описано в 1: сформируем
базис
в системе
координат
, переведем его в систему координат базиса
, он будет выглядеть как
, формулы приведены выше в 1.2. Вращение точки
вокруг точки
в системе координат
базиса
в плоскости векторов
,
будет описываться
аналогичным способом, как в 1:
. А непосредственно моделируемая поверхность будет выглядеть
так:
. Ниже приведен листинг
программы, иллюстрирующей приведенный в этом параграфе способ вращения
параметрической кривой вокруг другой.
|
Входные данные: |
|
Расчет
вектора |
|
Формирование уравнения |
|
Нахождение начальных условий для задачи
Коши |
|
Задание
дифференциального уравнения 1 порядка для решения задачи Коши |
|
Решение
задачи Коши |
|
|
|
|
|
График
зависимости параметра |
|
Тестовая проверка |
|
Локальный
базис |
|
Базисные
векторы |
|
Базис |
|
Вращаемая точка |
|
Та же
окружность, представленная в системе координат |
|
Перпендикуляр, опущенный из точки |
|
Визуализация
поверхности |
|
Результаты
работы программы, разные виды одной и той же поверхности |
|
3. Вращение параметрической
поверхности вокруг прямой
Рис. 3
Рассмотрим
параметрическую поверхность в некотором локальном базисе, в данном случае это
поверхность вращения: . Пусть центр координат локального базиса движется по
некоторой траектории
(рис. 3). Локальный
базис
,
и
в приведенном ниже
примере передвигается по траектории
следующим образом.
Параметрическая кривая
в нашем случае
является окружностью
. Единичный вектор
направлен по
касательной к кривой
:
. Единичный вектор
совпадает по
направлению с вектором
:
. Из условий постановки задачи очевидно, векторы
и
ортогональны.
Соответственно вектор
будет
. Далее, поступаем способом, описанным в § 1. Произведем преобразование
базис
системы координат
в базис
. Так он будет выглядеть из системы координат базиса
. В итого имеем, что передвигаемая поверхность
в зависимости от
значения параметра
выглядит так:
. Приведенный ниже листинг
программы иллюстрирует данные вычисления.
|
|
Задание параметров передвигаемой поверхности |
||||||
|
|
|||||||
|
|
Визуализация |
||||||
|
Задание и визуализация единичных векторов системы координат |
|||||||
|
||||||||
|
||||||||
|
Задание траектории перемещения |
|||||||
|
|
|
Задание локального базиса |
|||||
|
|
|
Перерасчет локального базиса |
|||||
|
|
Передвигаемая поверхность |
||||||
Визуализация поверхности |
||||||||
|
|
|
|
|||||
|
|
|
|
|||||
|
|
|||||||
|
|
|||||||
|
|
|||||||
|
|
|||||||
|
Поверхность |
|||||||
|
Результат передвижения поверхности |
|||||||
|
|
Среда MathCAD предполагает создание
анимированных изображений. |
||||||
|
||||||||
Если в системе координат (Рис. 3) зафиксировать локальный базис
мы получим следующий
результат, показанный ниже. Еще раз напомним о том, что должно выполняться
требование ортогональности локального базиса. Векторы
должны быть
единичными. Параметрическая кривая
и ориентация в системе
координат
локального базиса
может быть
произвольной.
|
Данный результат
достигается в листинге
программы следующим образом: |
|
|
||
|
|
|
Если в системе координат
локального базиса пожелаем произвести
вращение исходной поверхности вокруг оси ординат, то нам необходимо уравнение
исходной поверхности умножить на матрицу вращений вокруг оси
:
. Листинг
программы можно скачать здесь. Результат работы программы, в которой
вращение вокруг оси ординат локального базиса синхронизировано следующим
образом:
, показан ниже. Сам локальный базис
не вращается,
вращается в нем только исходная поверхность
.
|
Также
можно совершать одновременное вращение вокруг оси ординат и вокруг оси абсцисс
локального базиса :
. Анимированное
изображение создано при следующих параметрах вращений:
и
. Желание получить данный результат возникло после дискуссии
на форуме пользователей системы MathCAD портала математиков Exponenta.ru в топике под
названием ”Эффект
Джанибекова”.
Заключение
В
данной статье мы хотели продемонстрировать решение задач, связанных с
моделированием поверхностей, в которых присутствуют элементы вращения. Также были
решены некоторые кинематические задачи: задача движения поверхности по
траектории с изменяемой ориентацией локального базиса, задача движения
поверхности по траектории с вращением в локальном базисе. Решение было
произведено в системе компьютерной математики MathCAD 11, Также были приведены программные
коды всех примеров, изложенных в данной статье.
Список использованной литературы
1. Е. А. Никулин. Компьютерная
геометрия и алгоритмы машинной графики. –
СПб.: БХВ - Петербург, 2003. - 560 с.: ил. ISBN 5-94157-264-6
2. Д. В. Кирьянов. Самоучитель MathCAD 11. СПб.: БХВ – Петербург, 2003. -
560 с.: ил. ISBN 5-94157-348.0
3. Википедия.
Матрицы поворота
4. Форум пользователей системы MathCAD. http://forum.exponenta.ru
5.
Сайт: Applied
geometry and MATLAB. http://dubanov.exponenta.ru
6.
Сайт: Geometrical modeling in MathCAD. http://blagovest2002.narod.ru