Замятин Александр Витальевич
Zamyatin Alexander Ростовский государственный строительный университет
Rostov State Building University Доцент кафедры «Начертательной геометрии и черчение» Associate professor of the chair of “Descriptive geometry and sketching”
E-Mail: [email protected]
Замятина Екатерина Александровна
Zamyatin Ekaterina Ростовский государственный строительный университет
Rostov State Building University Ассистент кафедры «Начертательной геометрии и черчение» Assistant of the chair of “Descriptive geometry and sketching”
E-Mail: [email protected]
05.01.01.-«Инженерная геометрия и компьютерная графика»
Алгоритм построения линии пересечения каналовых поверхностей
Algorithm of construction of a line of crossing of bending around surfaces
Аннотация: В статье описан алгоритм построения линии пересечения каналовых поверхностей. Алгоритм реализован по технологии ObjectARX для AutoCAD. Это позволяет значительно ускорить работу программы, т.к. можно использовать стандартные функции системы AutoCAD и упростить интерфейс пользователя. Разработанные алгоритмы могут быть использованы в различных технических задачах, где существует необходимость построения линии пересечения каналовых поверхностей.
The Abstract: In article the algorithm of construction of a line of crossing of bending around surfaces is described. The algorithm is realised on technology ObjectARX for AutoCAD. It allows to accelerate considerably program work since it is possible to use standard functions of system AutoCAD and to simplify the interface of the user. The developed algorithms can be used in various technical problems where there is a necessity of construction of a line of crossing of bending around surfaces.
Ключевые слова: Каналовая поверхность, направляющая линия, образующая поверхность, сплайн.
Keywords: Bending around surface, directing line, forming a surface, spline.
***
При конструировании современных технических объектов широко применяются огибающие поверхности. Это обусловлено удобными определителями поверхностей, возможностью аналитического описания поверхностей. Среди огибающих поверхностей наибольшее распространение получили каналовые поверхности, которые являются огибающими однопараметрического множества сфер постоянного или переменного радиуса. Каналовые поверхности, образованные сферами постоянного радиуса называются трубчатыми. Каналовые по-
верхности применяются для моделирования различных каналов в стесненных условиях, например в двигателях, компрессорах и других сложных устройствах. Часто приходится строить линии пересечения таких поверхностей. Например, для определения траектории движения сферы по пространственным линиям [1, 2] необходимо решать данную задачу. В статье приведен алгоритм построения линии пересечения двух каналовых поверхностей. Алгоритм
реализован в среде ОЦвсіАКХдля АпіоСАБ [3] на языке С+ + [4].
Если в пространстве задано однопараметрическое множество образующих поверхно-
стей
Р(х,у,г,Ь) =0, (1)
то уравнение поверхности, которая огибает однопараметрическое множество поверхностей (1), определяется следующей системой уравнений [5]
(Р(х,у,г,Ь) = 0;
| дР(х,у,г{) = о (2)
Рассмотрим случай, когда огибающей является каналовая поверхность. Пусть задано однопараметрическое множество сфер, радиусы которых равны Яа, центры расположены на лини а, векторное уравнение которой имеет вид
г = г^^(и). (3)
Будем считать, что линия (3) непрерывна и имеет в каждой точке непрерывные первую и вторую производные. Запишем уравнение однопараметрического множества этих сфер
(х - ха(и))2 + (у- ус(и))2 + (г- гс(и))2 -Я^ = 0, (4)
где ха(и), уа(и), га(и) координаты центров сфер, входящих в однопараметрическое множество, т.е. координаты точек, лежащих на линии а. Эти координаты являются функциями от параметра и. Подставив (4) в (2), получим уравнение каналовой поверхности
(2 2 2 \(х-ха(и)) +(у-уа(и)) + (г - га(и)) - Я^ = 0;
(х - ха(и))х'а + (у — уа(ц))у01 + (г - га(и))г'а = 0,
" йха(и) " йуа(и) " йга(и) #г$(и)
где ха = , уа = , га = - координаты вектора . Система уравне-
ний (5) определяет однопараметрическое множество окружностей, принадлежащих поверхности (параметр - и).
Пусть задана вторая каналовая поверхность, огибающая однопараметрическое множество сфер, радиуса Яь, центры которых находятся в точках линии Ь
г = г"(р).
Уравнение этой каналовой поверхности имеет вид
¡222 (х-хь(()) +(у-уь(()) + (г-гь(()) - Я" = 0;
(х - хь(р))х" + (у - уь(())у'ь + (г- гу(())г'ь = 0,
, #хь(у) , #у*()) " #гь()) #г*(у)
где хь =------, уь =------, г." =--------координаты вектора--------.
Построим линию пересечения каналовых поверхностей (5) и (6). Она определяется следующей системой уравнений
\х - ха(и))2 + (у- Уа(и))2 + (г- га(и))2 -Я2а = 0;
(х - Ха(и))ха + {у- уа(и))уа + (г - га(и))г'а = 0;
< 2 2 2 (7) (х-хь(р)) + (у — Уь(()) + (г-гь(р)) - Я" = 0;
+ (х - хь(р))х'ь + (у - уь(())у" + (г- г)(р))г" = 0.
В качестве параметра искомой линии пересечения возьмем параметр линии a - u. Для определения координат точек линии пересечения решим систему (7) методом Ньютона. Обозначим
/г = (х- ха)2 + (у- у О)2 + (г- га)2 - Я2а;
/2=(х - х0)х'а + (у- уаЖ + & - г^;
(8)
/з = (х - хь)2 + (у- уь)2 + (г- гь)2 - Я"; и = {х- хь)х'ь + (у - уь)у" + (г- гу)г'ь.
Продифференцируем уравнения (8) по x, у, z, v, получим
#4 = 2(х- ха), #4 = 2(у- уа), #4=2(г- га), = 0,
дх к а^ ду */аУ’ дг к д)
д/2 = д/2 = • д/2 = # д/2 = Л
л ха, д уа, д га, д 0,
дх дуу дг д)
#8 = 2(х-х„), #8= 2(у - у„), #8=2(г- г"),
= -2(х - хь)х'ь - 2(у - уь)у'ь - 2(г - г^г",
д/4 = д3 = , д/ = ,
дх Хь, ду у", дг г",
= -х"2 + (х- хь)хь-у"2 + (у- уьЫ'-г"2 + (г-
Пусть xг■, уи zi, vi - некоторое приближение искомых параметров, для нахождения приращения параметров Axi, Ду-, Дгг-, Ду, на ¡-м шаге итерации, решаем следующую систему линейных уравнений
гд3_ дх Ах; + дд > ; + д/1 дг Аг; + д/1 д) > ; = 1
д/2 дх Ах; + дд Ау; + д/2 дг Аг; + д/2 д) А(; = /2;
д/з дх Ах; + д/з ду Ау; + д/з дг Аг; + д/з д) А(; = -/1;
д/9 < дх Ах; + д/9 ду Ау; + д/4 дг Аг; + д/4 д) А(; = -/2.
Значения функций (8) и их производных (9) в системе (10), берутся при х = х;,у = у;, г == г;,( = Следующее приближение параметров вычисляется по формулам
Ах1+1 =х;+ Ах;, Ау;+1 =у;+ Ауи Аг;+1 =г;+ Аги А(; + 1 = (; + А(;. (11)
Процесс итерации завершается, когда максимальное по модулю значение приращения параметра меньше заданной точности 8.
Рассмотрим программные алгоритмы решения данной задачи. При описании алгоритмов входящий, если ни указано дополнительно, тип или функция относятся к стандартным типам или функциям С++[4] или ObjectARX [3]. Для хранения данных различных типов в памяти компьютера используются связные списки шаблонов ListNode<Tipe>. Алгоритмы работы с этими списками приведены в [6]. В качестве направляющих линий взяты сплайны (объекты AcDbSpline).
Основной функцией, разработанного программного обеспечения, является функция MN. Она предназначена для решения системы уравнений (7) методом Ньютона. Рассмотрим подробнее ее алгоритм. Входными параметрами функции являются следующие переменные:
• pSpl - указатель на сплайн, который является направляющей линией b (тип AcDbSpline *);
• pta - центр образующей сферы на направляющей линии а (тип AcGePoint3d);
• va - первая производная в точке pta (тип AcGeVector3d);
• R - радиус образующей сферы (тип double);
• pt_pr - начальное приближение точки искомой линии (тип AcGePoint3d);
• v_pr - начальное приближение параметра v (тип double)
• e - точность вычисления (тип double);
• ppt - указатель, по адресу которого записывается найденная точка линии пересечения (тип AcGePoint3d*);
• pv - указатель, по адресу которого записывается найденный параметр(тип double*).
Функция возвращает значение true, если вычисление завершено успешно и false, если точка не определена (тип bool).
Рис. 1. Блок-схема алгоритма функции MN
Рассмотрим блок-схему алгоритма, приведенную на рис. 1.
1. Присвоить pt=pt^г, v=v^г, п=0.
2. Присвоить v_min начальный параметр сплайна pSpl (функция getStartParam), присвоить v_max конечный параметр сплайна pSpl (функция getEndParam).
3. Переменной ptb присвоить точку на сплайне pSpl, соответствующую параметру v (функция getPointAtParam). Переменной vb присвоить первую производную (функция getFirstDeriv). Переменной ууЬ присвоить вторую производную (функция getSecondDeriv). Первая и вторая производные берутся в точке ptb.
4. Вычислить коэффициентов системы (10) по формулам (9) и присвоить их значения элементам массива a[ij].
5. Вычислить свободные члены системы (10) по формулам (8) и присвоить их значения элементам массива Ьр].
6. Решить систему (10).Система (10) решалается методом Гаусса [5]. В качестве входных данных использовались массивы a[ij] и Ь[], результаты помещаются в массив x[i].
7. Вычислить новые значения параметров по формулам (11) и присвоить их значения переменным pt и v.
8. Увеличить значение переменной п на 1.
9. Условие: если v<v_mm или v>v_max или п>500, то вычисление ведется по ветви «+», иначе - по ветви «-».
Главный редактор - д.э.н., профессор К.А. Кирсанов тел. для справок: +7 (925) 853-04-57 (с 1100 - до 1800) Опубликовать статью в журнале - http://publ.naukovedenie.ru
10. Присвоить e_max=|x[1]|, i=2.
11. Условие: если i<4, то вычисление ведется по ветви «+», иначе - по ветви «-».
12. Условие: если e_max>|x[i]|, то вычисление ведется по ветви «+», иначе - по вет-
ви «-».
13. Присвоить e_max=|x[i]|.
14. Значение переменной i увеличить на 1.
15. Условие: если e_max>e, то вычисление ведется по ветви «+», иначе - по ветви «-
16. Записать значения переменныхpt и v по адресам указателейppt иpv.
17. Функции присвоить значение true.
18. Функции присвоить значение false.
Пример построения линии пересечения каналовых поверхностей приведен на рис. 2. На рис. 2 направляющие линии обозначены через a и b, линия пересечения поверхностей обозначена через c.
Описанный алгоритм может быть использован самостоятельно в качестве системы построения линий пересечения каналовых поверхностей. Так как алгоритм разработан в Objec-tARX, он легко интегрируется в AutoCAD и запускается в ней специальной командой. Алгоритм может быть использован в качестве модуля автоматизированных систем.
».
Рис. 8. Пример расчета линии пересечения
ЛИТЕРАТУРА
1. Замятин А.В. Формообразование поверхностей на основе аппарата кинематики поверхностей 2-го порядка / А.В. Замятин. - Ростов-на-Дону: Издательство РГСУ, 2004. - 120 с.
2. Замятин А.В. Новые способы образования оболочек на основе кинематики поверхностей второго порядка / А.В. Замятин. - Известия вузов. Северо-Кавказский регион. Технические науки. Приложение №9, 2004 г.
3. Полищук Н.Н. AutoCAD: разработка приложений, настройка и адаптация / Н.Н. Полищук. - СПб.: БХВ - Петербург, 2006. - 992 с.
4. Секунов Н.Ю. Visual C++ Визуальная среда программирования / Н.Ю.Секунов. - СПб.: БХВ - Петербург, 1999. - 960 с.
5. Корн Г., Корн Т. Справочник по математике / Г. Корн, Т. Корн. - М.: Наука, 1973. - 832 с.
6. Труб И.И. Объектно-ориентированное моделирование на С++ / И.И. Труб. -
СПб.: Питер, 2006. - 411 с.