9354 УДК 004.434 ПРОБЛЕМНО-ОРИЕНТИРОВАННЫЙ ЯЗЫК МОДЕЛИРОВАНИЯ ГЕОМЕТРИЧЕСКИХ ОБЪЕКТОВ НА БАЗЕ СТАНДАРТА ECMASCRIPT С.В Чопоров Запорожский национальный университет Украина, 69600, Запорожье, Жуковского ул., 66 E-mail: s.choporoff@gmail.com А.А. Лисняк Запорожский национальный университет Украина, 69600, Запорожье, Жуковского ул., 66 E-mail: munspel@rambler.ru Х.Х. Алатамнех Запорожский национальный университет Украина, 69600, Запорожье, Жуковского ул., 66 E-mail: mmod@znu.edu.ua Ключевые слова: проблемно-ориентированный язык, математическое моделирование, геометрический объект, R-функция, ECMAScript Аннотация: В работе рассмотрена проблема автоматизации математического моделирования с использованием проблемно-ориентированных языков. Предложен проблемно-ориентированный язык для моделирования сложных геометрических объектов на базе неявных математических функций и теории R-функций. В качестве основы проблемно-ориентированного языка предлагается использовать стандарт ECMAScript. 1. Введение Развитие современного высокотехнологичного производства требует качественной эволюции системы подготовки кадров. Высокая конкуренция на рынке машиностроения и инженерных технологий ведет украинских разработчиков к необходимости проектирования все более сложных и неординарных решений. Дороговизна ошибки при реализации таких решений на практике приводит к необходимости их компьютерного моделирования и внесения оптимизационных изменений по результатам моделирования. В современной технике одним из наиболее трудоемких является этап анализа функциональных характеристик, механических свойств, прочности и долговечности XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9355 проектируемых конструкций, сооружений, машин и механизмов. Для проведения этого этапа необходимо построение различных математических моделей, в составляющие части которых, как правило, входят сложные геометрические модели исследуемых объектов. Подходы к формализации геометрической структуры проектируемого объекта, как правило, основаны на использовании некоторого формального языка, который позволяет агрегировать базовые элементы, образующие библиотеку конкретной системы автоматизации проектировочных работ (САПР). Активно развивающимся направлением САПРа является автоматизация вычислений физических характеристик исследуемого объекта. Анализ этого направления показывает, что большое количество возникающих на практике задач (в частности анализ напряженнодеформированного состояния) связано с необходимостью решения систем дифференциальных или интегральных уравнений. Для их решения современные САПР используют различные вычислительные методы, основанные на идеи перехода от непрерывной задачи к дискретной, например, метод конечных элементов [1–3]. При решении задач методом конечных элементов соответствующая исследуемому объекту геометрическая область разбивается на непересекающиеся конечные элементы заданного типа. Совокупность вершин (узловых точек), связей между ними и базисные аппроксимирующие функции (функции формы) определяют тип конкретного конечного элемента. Искомая величина при этом определяется с помощью значений, найденных в узловых точках, и функций формы. На практике при реализации систем моделирования на основе метода конечных элементов исследователь сталкивается с проблемой решения систем линейных алгебраических уравнений большой размерности. Количество уравнений в системе при этом пропорционально количеству узловых точек в исходной дискретной конечноэлементной модели. Следовательно, актуальной является разработка методов получения дискретных моделей с формой конечного элемента, которая позволяла бы одновременно с уменьшением числа линейных алгебраических уравнений увеличить точность определения исследуемой характеристики. Отдельной до конца не решенной задачей является автоматизация процесса построения геометрических моделей сложной формы. Данная проблема может быть условно разделена на две составляющие: 1) формализация описания геометрической модели сложного объекта; 2) автоматизация построения на ее базе адекватной дискретной модели. Среди наиболее распространенных методов и подходов автоматизации математического моделирования трехмерных геометрических объектов можно условно выделить: • граничное представление; • твердотельное представление; • функциональное представление. В основе граничного представления предположение, что произвольное тело Ω обладает некоторой границей ∂Ω, а граница любого трехмерного тела однозначно определяет его в трехмерном пространстве [4]. Т.е. при таком подходе Ω представляется его границей ∂Ω без перечисления внутренних точек. Возможность представления тела в виде совокупности ограничивающих его объем оболочек, универсальность XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9356 используемых структур, сделали этот подход одним из наиболее популярных в компьютерной графике (граничное представление лежит в основе ядра геометрического моделирования Parasolid [5]). Однако, необходимо отметить, что для тел нестандартной формы построение ограничивающих оболочек является весьма трудоемкой задачей. Твердотельное представление (конструктивная блочная геометрия – Constructive Solid Geometry, CSG) – подход, в основе которого использование булевых и геометрических операций над некоторым множеством относительно простых геометрических объектов – примитивов (например, шар, тор, призма и другие). Необходимо отметить, что около 60% могут быть представлены при помощи системы твердотельного моделирования, в основе которой прямоугольные балки и цилиндрические примитивы [6]. Однако, при использование такого представления, с одной стороны, трудоемким является построение границ объекта, с другой стороны, для нестандартных тел проблемно найти соответствующую комбинацию примитивов. Функциональное представление – подход, основанный на идее моделирование геометрической структуры при помощи математических функций или соотношений. Наиболее распространенным здесь является использование неявных функций, простейшей формой которых является ограничение на знак некоторой функции f (p). Например, если f (x, y, z) = Ax + By + Cz + D, тогда f (x, y, z) = 0, f (x, y, z) > 0 и f (x, y, z) < 0, соответственно определяют плоскость, закрытое и открытое полупространство. Развитием функционального подхода является построение сложных функций конструктивно, используя логические комбинации более простых функций (аналогичные стандартным операциям над множествами). Такие операции разработаны в работах академика В.Л. Рвачева [7–9], названы теорией R-функций и позволяют строить логические комбинации действительных функций. Использование математических функций совместно с R-функциями позволяет строить модели тел произвольной сложности. Таким образом, актуальным является разработка проблемно-ориентированного языка для автоматизации моделирования геометрических объектов на базе функционального представления. Возможным решением этой задачи является использование существующих стандартов языков высокого уровня. Одним из наиболее распространенных стандартов является ECMAScript [10] – встраиваемый расширяемый язык программирования, используемый в качестве основы для построения других скриптовых языков (например, JavaScript, ActionScript и других). 2. R-функции в математическом моделировании геометрических объектов Пусть Ω – сложное тело, обладающее ограниченным объемом и конечным числом особенностей (геометрический объект), математическую модель которого необходимо получить. Наиболее общим методом определения множества точек X, образующих геометрический Ω, является определение предиката A, который может быть вычислен для каждой точки p евклидова пространства [4]: X = {p | A(p) = true} . XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9357 Таким образом, множество X определено неявно и состоит из всех точек, удовлетворяющих предикату A. Простейшей формой такого предиката является ограничение на знак некоторой действительной функции. Например, если предположить, что некоторая функций больше нуля для внутренних точек тела, равна нулю в граничных точках и меньше нуля в любой внешней точке, то «конструировать» такую функцию можно использую системы R-функций. Наиболее распространенная на практике система R-функций [7–9] имеет вид: C ≡ const, ¬x ≡ −x, q x1 ∧ x2 ≡ x1 + x2 − x21 + x22 , q x 1 ∨ x2 ≡ x1 + x2 + x2 + x2 . 2 1 Например, область, изображенная на рис. 1, может быть представлена неявной функцией (объединением прямоугольника со смещенным кругом): #! " # " 2 2 2 w 2 h h w f (x, y) = − y2 − x− ∨ − x2 ∧ − y2 . 2 2 2 2 Рис. 1. Чертеж области 3. Основы синтаксиса Естественным решением проблемы автоматизации математического моделирования геометрических объектов на базе функционального подхода и теории R-функций является разработка проблемно-ориентированного языка, позволяющего описывать математические формулы. Такой подход сочетает в себе гибкость описания и компактность хранения модельных данных. При этом система для проектировщика должна предоставлять язык, близкий к предметной области, формируя, таким образом, словарь системы. Такой подход позволит моделировать ряд стандартных деталей в терминах конструктивной блочной геометрии, а для моделирования элементов с нестандартной формой использовать определяемые пользователем функции. В стандарте ECMAScript определено пять примитивных типов данных: • числовой (Number); • строковый (String); XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9358 • логический (Boolean); • нулевой (Null); • неопределенный (Undefined). Числовой тип данных соответствует 64-битному формату чисел с плавающей точкой. Также определен объектный тип данных (Object) и типы данных для хранения промежуточных результатов выражений. В ECMAScript определены пятнадцать видов синтаксических конструкций [11], основные из них приведены в таблице 1. Таблица 1. Синтаксические конструкции ECMAScript Название Структура Блок {[ < инструкции >]} Объявление переменной var < список объявления переменных > Пустая инструкция ; Условие if ( < инструкция >) < выражение >[ else < выражение >] Цикл do < выражение > while ( < инструкция >); while ( < инструкция >) < выражение >; for ([ < инструкция до начала >]; [ < инструкция >]; [ < инструкция >]) < выражение >; for ( < объявление переменных >; [ < инструкция >]; [ < инструкция >]) < выражение >; for ( < lvalue - выражение > in < инструкция >) < выражение >; for ( < объявление переменных > in < инструкция >) < выражение >; Продолжение continue Прерывание break Возврат return Сочетание with ( < инструкция >) < выражение > Выбор switch ( < инструкция >) case < инструкция >: [ < выражения >] [ case < инструкция >: [ < выражения >] ...] [ default : [ < выражения >]] Таким образом, ECMAScript предоставляет богатый набор синтаксических конструкций. Для формирования высокоуровневого проблемно-ориентированного языка его необходимо дополнить терминами предметной области – примитивами для моделирования геометрических объектов. XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9359 4. Словарь проблемно-ориентированного языка Для удобства моделирования можно определить многоместные R-операции дизъюнкции, конъюнкции и разности: (1) U nion(x1 , x2 , . . . , xn ) = x1 ∨ x2 ∨ . . . ∨ xn , Intersection(x1 , x2 , . . . , xn ) = x1 ∧ x2 ∧ . . . ∧ xn , Dif f erence(y, x1 , x2 , . . . , xn ) = y ∧ ¬x1 ∧ ¬x2 ∧ . . . ∧ ¬xn , которым в проблемно-ориентированном языке будут соответствовать функции: Union ( x1 , x2 , ...); Intersection ( x1 , x2 , ...); Difference (y , x1 , ...); Математическое моделирование многих инженерных деталей и конструкций может быть сведено к последовательным логическим операциям объединения и пересечения полуплоскостей (в 2D) или полупространств (в 3D). Полуплоскость, заданная упорядоченной парой точек A1 (x1 ; y1 ) и A2 (x2 ; y2 ) и расположенная по правую сторону при движении от первой ко второй точке, может быть представлена формулой (2) FAA (x, y, x1 , y1 , x2 , y2 ) = (x − x1 )(y2 − y1 ) − (y − y1 )(x2 − x1 ), а соответствующая функция проблемно-ориентированного языка будет иметь сигнатуру: Faa (x , y , x1 , y1 , x2 , y1 ); Область, ограниченная эллипсом с центром в точке (x0 ; y0 ), большая полуось которого равна a, малая полуось – b, может быть представлена формулой (x − x0 )2 (y − y0 )2 − , a2 b2 частным случаем которой является круг радиуса r с центром в точке (x0 ; y0 ): (3) Ellipse(x, y, x0 , y0 , a, b) = 1 − (4) Disk(x, y, r, x0 , y0 ) = r2 − (x − x0 )2 − (y − y0 )2 . Сигнатуры соответствующих примитивов проблемно-ориентированного языка примут вид: Ellipse (x , y , x0 , y0 , a , b ); Disk (x , y , r , x0 , y0 ); Аналогично, в трехмерном пространстве функция, соответствующая области, ограниченной эллипсоидом с центром в точке (x0 ; y0 ; z0 ) и полуосями равными a, b и c, может быть представлена формулой (x − x0 )2 (y − y0 )2 (z − z0 )2 − − , (5) Ellipsoid(x, y, z, x0 , y0 , z0 , a, b, c) = 1 − a2 b2 c2 а шар радиуса r с центром в точке (x0 ; y0 ; z0 ): (6) Ball(x, y, z, r, x0 , y0 , z0 ) = r2 − (x − x0 )2 − (y − y0 )2 − (z − z0 )2 . При этом сигнатуры соответствующих примитивов проблемно-ориентированного языка примут вид: XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9360 Ellipsoid (x , y , z , x0 , y0 , z0 , a , b , c )); Ball (x , y , z , r , x0 , y0 , z0 ); Выпуклый многоугольник, заданный упорядоченной последовательностью из n > 3 вершин Vn = (xi ; yi ), i = 1, n, при условии обхода вершин по часовой стрелке, может быть представлен конъюнкцией n полуплоскостей, последовательно образуемых парами вершин: (7) ConvexP olygon(x, y, Vn = (xi ; yi ), n) = = FAA (x, y, x1 , y1 , x2 , y2 ) ∧ FAA (x, y, x2 , y2 , x3 , y3 ) ∧ . . . ∧ ∧ FAA (x, y, xn−1 , yn−1 , xn , yn ) ∧ FAA (x, y, xn , yn , x1 , y1 ), Частным случаем выпуклого многоугольника является правильный n-угольник, вписанный в окружность радиуса r с центром в точке (x0 ; y0 ), первая вершина которого расположена на пересечении положительного направления оси ординат и окружности: 2π (i − 1), i = 1, n , V = (ξi ; ηi ) : ξi = x0 + r sin αi , ηi = y0 + r cos αi , αi = n (8) RegularP olygon(x, y, r, x0 , y0 , n) = ConvexP olygon(x, y, V, n). Другим распространенным частным случаем выпуклого многоугольника является прямоугольник, который с вычислительной точки зрения более выгодно рассматривать в виде логического пересечения двух полос: (9) Rectangle(x, y, x0 , y0 , w, h) = 2 # " 2 w 2 w 2 h h = − x − x0 − − y − y0 − , ∧ 2 2 2 2 где (x0 ; y0 ) – координаты нижнего левого угла, w – ширина, h – высота. Используя рассуждения аналогичные формуле 9, прямоугольный параллелепипед можно представить формулой (10) Box(x, y, z, x0 , y0 , z0 , w, h, d) = " 2 2 # w 2 w 2 h h = − x − x0 − ∧ − y − y0 − ∧ 2 2 2 2 " 2 # 2 d d , ∧ − z − z0 − 2 2 Соответственно для примитивов, представленных формулами 7 – 10, можно определить функции проблемно ориентированного языка: ConvexPolygon (x , y , x1 , y1 , x2 , y2 , x3 , y3 , ...); RegularPolygon (x , y , r , x0 , y0 , n ); Rectangle (x , y , x0 , y0 , w , h ); Box (x , y , z , x0 , y0 , z0 , w , h , d ); Например, геометрический объект, изображенный на рис. 2, можно представить как объединение семи шаров. Тогда его будет представлять такая функция проблемно-ориентированного языка: XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9361 function balls (x , y , z ) { var r1 = 0.7; // радиус центрального шара var r2 = 0.3; // радиус окружающих шаров var ball1 = Ball (x , y , z , r1 , 0 , 0 , 0); // центральный шар var ball2 = Ball (x , y , z , r2 , r1 , 0 , 0); var ball3 = Ball (x , y , z , r2 , -r1 , 0 , 0); var ball4 = Ball (x , y , z , r2 , 0 , r1 , 0); var ball5 = Ball (x , y , z , r2 , 0 , -r1 , 0); var ball6 = Ball (x , y , z , r2 , 0 , 0 , r1 ); var ball7 = Ball (x , y , z , r2 , 0 , 0 , - r1 ); return Union ( ball1 , ball2 , ball3 , ball4 , ball5 , ball6 , ball7 ); } Рис. 2. Объединение шаров Для построения объектов с элементами нестандартной формы могут быть использованы определенные пользователем функции. Например, зубчатое колесо (рис. 3) может быть представлено при помощи такого кода. var var var var var var var var var var var var var var var var m = 1.0; // модуль z = 20; // число зубьев d = m * z; da = d + 2.0 * m ; df = d - 2.5 * m ; s = m * pi / 2.0; alpha = pi / 9.0; r = d / 2.0; ra = da / 2.0; rf = df / 2.0; rb = r * Math . cos ( alpha ); N_x = - rb * Math . sin ( alpha ); N_y = rb * Math . cos ( alpha ); NP = r * Math . sin ( alpha ); phi = - s / r ; d_gamma = 2.0 * pi / z ; XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9362 Рис. 3. Зубчатое колесо function teeth (x , y , i ) { var x_gamma = x * Math . cos ( i * d_gamma ) y * Math . sin ( i * d_gamma ); var y_gamma = x * Math . sin ( i * d_gamma ) + y * Math . cos ( i * d_gamma ); var x_phi = x_gamma * Math . cos ( phi ) y_gamma * Math . sin ( phi ); var y_phi = x_gamma * Math . sin ( phi ) + y_gamma * Math . cos ( phi ); return Intersection (( NP * NP - Math . pow (( x_gamma - N_x ) , 2) Math . pow (( y_gamma - N_y ) , 2.0)) , ( NP * NP - Math . pow (( x_phi + N_x ) , 2.0) Math . pow (( y_phi - N_y ) , 2.0))); } function gear (x , y ) { var cf = Disk (x , y , rf , 0.0 , 0.0); var teethes = teeth (x , y , 0); for ( var i = 1; i < z ; i ++) { teethes = Union ( teethes , teeth (x , y , i )); } return Intersection ( Union ( cf , teethes ) , Disk (x , y , ra , 0 , 0) , - Disk (x , y , ra / 2.0 , 0 , 0)); } XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г 9363 5. Выводы Таким образом в работе предложен подход к автоматизации математического моделирования геометрических объектов на базе функционального подхода и теории Rфункций. В качестве базы для построения синтаксиса проблемно-ориентированного языка использован стандарт ECMAScript. Такое решение позволяет соединить гибкость языка общего назначения с возможностью использования предопределенных примитивов – конструирования моделей геометрических объектов. Список литературы 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Зенкевич О.С. Метод конечных элементов в технике. М.: Мир, 1975. 541 с. Сегерлинд Л. Применение метода конечных элементов. М.: Мир, 1979. 392 с. Толок В.А., Киричевский В.В., Гоменюк С.И., Гребенюк С.Н., Бувайло Д.П. Метод конечных элементов: теория, алгоритмы, реализация. Киев: Наукова думка, 2003. 316 с. Farin G, Hoschek J., Kim M.-S. Handbook of computer-aided geometric design. Amsterdam: Elsevier Science B.V., 2002. 848 p. http://www.plm.automation.siemens.com/en_us/products/open/parasolid/index.shtml. Agoston M.K. Computer graphics and geometric modeling:implementation and algorithms. London: Springer, 2005. 959 p. Рвачев В.Л. Теория R-функций и некоторые ее приложения. Киев: Наукова думка, 1982. 552 с. Рвачев В.Л., Шевченко А.Н. Проблемно-ориентированные языки и системы для инженерных расчетов Киев: Технiка, 1988. 198 с. Рвачев В.Л., Шейко Т.И. Введение в теорию R-функций // Проблемы машиностроения. 2001. Т. 4, № 1-2. С. 46-58. http://www.ecmascript.org/. http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf. XII ВСЕРОССИЙСКОЕ СОВЕЩАНИЕ ПО ПРОБЛЕМАМ УПРАВЛЕНИЯ ВСПУ-2014 Москва 16-19 июня 2014 г