УДК 004.925.86
МОДЕЛИРОВАНИЕ И ВИЗУАЛИЗАЦИЯ НЕГЛАДКИХ КРИВЫХ
Ю. Н. Косников, А. П. Зимин, А. В. Новиков
MODELING AND VISUALIZATION OF NON-SMOOTH CURVES Yu. N. Kosnikov, A. P. Zimin, A. V. Novikov
Аннотация. Предмет и цель работы. Существуют задачи визуализации математических функций, имеющих в некоторых точках разрыв первой производной. Визуализация этих функций на плоскости дает негладкие кривые. Это визуализация результатов мониторинга и измерений, изолиний, объектов цифровой топографии, поперечных сечений неаналитических поверхностей и др. Исходной информацией для построения негладких кривых является набор их характерных (опорных) точек. Возникает задача выбора интерполяционных методов построения кривых с изломами в заданных точках. Материалы и методы. Предлагается информационно-алгоритмический способ сплайн-интерполяции плоских кривых линий, заданных множеством опорных точек. Способ позволяет получать как гладкие кривые, так и кривые с изломами. Для получения изломов опорные точки дополняются новыми опорными точками, влияющими на направления касательных к участкам кривой. Координаты дополнительных опорных точек находятся из условия прохождения участков кривой через промежуточные опорные точки. Результаты. Для хранения координат опорных точек создана списковая информационная структура. Элемент списка содержит координаты трех опорных точек. Через исходную точку точно проходит отсек сплайновой кривой. Две дополнительные точки задают изломы отсека в его начальной и конечной исходных точках. Описана логика интерполирующего алгоритма. Алгоритм всегда обходит список по одному и тому же закону, независимо от наличия или отсутствия изломов. Выводы. Применение описанного способа позволяет получать гладкие и негладкие кривые любой желаемой формы. Способ отличается от интерполяции сплайнами Кэтмулла - Рома возможностью получения изломов в опорных точках. Отличие от интерполяции сплайнами Безье и Эрмита заключается в том, что способ не требует задавать касательные к отсекам в случае их гладкого сопряжения.
Ключевые слова: составная кривая, рассеянные данные, негладкая кривая, визуализация, интерполяция, сплайн, дополнительная опорная точка.
Abstract. Subject and goals. There are problems of visualization of mathematical functions having at some points the gap of the first derivative. Visualizing these functions on a plane yields non-smooth curves. This is a visualization of monitoring and measurement results, contours, digital topography objects, sections of non-analytical surfaces, etc. the Initial information for the construction of non-smooth curves is a set of their characteristic (reference) points. There is a problem with choosing interpolation methods to plot curves with breaks at given points. Materials and methods. An information-algorithmic method of spline interpolation of plane curved lines defined by a set of reference points is proposed. The method allows obtaining both smooth curves and curves with fractures. To obtain fractures, the reference points are supplemented with new reference points that affect the directions of the tangents to the sections of the curve. The coordinates of the additional reference points are from the condition of passing the curve sections through the intermedi-
ate reference points. Results.A list information structure has been created to store the coordinates of the reference points. The list item contains the coordinates of the three reference points. A section of the spline curve passes exactly through the starting point. Two additional points define the segment fractures at its begin and end points. The logic of the interpolating algorithm is described. The algorithm always bypasses the list by the same law, regardless of the fractures presence or absence. Conclusions.The use of the described method allows obtaining smooth and non-smooth curves of any desired shape. The method differs from interpolation by Catmull - Rom splines by the possibility of obtaining fractures at the reference points. The difference by Bezier and Hermite spline interpolation is that the method does not require specifying tangents to the curve segments in the case of their smooth conjugation.
Keywords: additional reference point, composite curve, interpolation, non-smooth curve, scattered data, spline, visualization.
Введение
Существует целый ряд задач визуализации математических функций, имеющих в некоторых точках разрыв первой производной. Визуализация этих функций на плоскости дает кривые, имеющие С°-гладкость. Такие кривые далее будем называть негладкими кривыми, а точки разрыва производной - изломами. Негладкие кривые могут быть построены на основе результатов мониторинга и измерений физических величин, например, зон залегания полезных ископаемых или геологических профилей регионов. Негладкими кривыми являются некоторые изолинии - изобата, изопаха, изогип-са и др. К таким кривым относятся объекты цифровой топографии, например, границы земельных участков, береговая линия водных объектов. Разнообразную, в том числе негладкую, форму могут иметь траектории движения транспортных средств. Негладкие кривые представляются автоматизированными обучающими системами при изучении некоторых наук. Это, в частности, результаты деформаций в топологии, геометрические объекты на криволинейных поверхностях, например на сфере, графические фигуры (их фрагменты), полученные проецированием суперквадрик на плоскость. Кроме того, негладкие кривые являются основой для представления поперечных сечений неаналитических поверхностей, таких как поверхность Земли.
Обычно исходной информацией для построения негладких кривых является набор их характерных (опорных) точек. Тогда построение кривых идет с применением интерполяционных методов. Применяются различные виды интерполяции. Простейшим из них является кусочно-линейная интерполяция. Другой вариант основан на применении непрерывных кусочно-гладких кривых, которые состоят из нескольких состыкованных участков, например, кубических кривых. В первом случае низка точность приближения ломаной к желаемой форме, особенно при больших расстояниях между опорными точками. Во втором случае необходимо описывать и строить участки кривой порознь, по раздельно заданным для каждого участка опорным точкам, что усложняет алгоритм интерполяции. В настоящее время часто применяют интерполяцию на основе радиальных базисных функций [1], однако интерпо-лянт, построенный с их применением, не позволяет простыми средствами управлять разрывами первой производной. Возникает задача выбора метода моделирования негладких кривых.
Материал и методика
Для построения негладких кривых можно применить сплайн-интерполяцию, но не традиционную, а модифицированную. Традиционная интерполяция распространенными в компьютерной графике сплайнами Кэт-мулла - Рома (Catmull - Rom), В-сплайнами, бета-сплайнами, как известно, дает гладкую кривую [2-4]. Гладкая кривая получается с применением оригинального и модифицированного сплайна Акимы (Akima) [5, 6]. Сплайны Эрмита (Hermite) и Безье (Bezier) позволяют получить изломы на стыках отсеков составной кривой. Для этого нужно задавать желаемые направления касательных, проведенных через точки стыка. Для отсека Эрмита направление касательной задается численным значением ее тангенса, а для отсека Безье - двумя точками (опорной и дополнительной), принадлежащими касательной [7, 8]. Определить направления касательных к кривой, заданной лишь характерными точками, невозможно. Для этого нужны какие-то дополнительные условия, получить которые можно, скорее всего, лишь с помощью человека - эксперта.
Одно из нетрадиционных решений - интерполяция сплайнами Кочанек-Бартельса (Kochanek - Bartels) [9]. В математическое описание этих сплайнов введены три количественных параметра: натяжение (tension), непрерывность (continuity) и смещение (bias). Их изменение позволяет менять направления и длины касательных в опорных точках кривой и управлять ее формой. Сплайны Кочанек - Бартельса создавались авторами для целей анимации изображений. Вычисление и плавное изменение управляющих параметров от кадра к кадру позволяло получить желаемую динамику кривых во времени. Для визуализации результатов вычислений настройка каждого отсека составной кривой с помощью трех параметров, которые к тому же влияют на форму кривой комплексно, является слишком затратной.
В противовес чисто математическому способу управления изгибами криволинейного отсека можно попытаться применить комбинированный способ, основанный на информационных технологиях. Составная кривая должна точно проходить через исходные опорные точки, следовательно, они не могут быть изменены. Тогда для задания изгибов кривой можно использовать некоторые дополнительные средства, например, дополнительные опорные точки. Главное, чтобы их положение и влияние на гладкость составной кривой могли быть определены алгоритмически. Такой подход положен в основу описываемой в работе методики моделирования кривых с управляемой гладкостью.
Результаты
Предлагается информационно-алгоритмический способ получения негладких кривых. Он заключается в добавлении к множеству исходных опорных точек сплайна дополнительных опорных точек. Дополнительные точки задают направления и длины касательных в тех исходных точках, где требуется задать изломы кривой. При формировании составной кривой вычислительный алгоритм выбирает из множества исходных и дополнительных точек те точки, которые требуются для получения гладкого или негладкого сопряжения соседних отсеков. При этом форма математического описания отсеков и алгоритм интерполяции не претерпевают никаких изменений.
Для реализации предлагаемого способа наиболее подходят разновидности сплайнов, в которых касательные к отсекам задаются положением опорных точек. С целью обеспечения высокой производительности и точности интерполяции из них следует выбрать сплайны, имеющие простое описание и обеспечивающие точное прохождение кривой через опорные точки. Этим требованиям удовлетворяют сплайны Безье и сплайны Кэтмулла - Рома, причем последние имеют предпочтение. Дело в том, что отсеки составной кривой могут стыковаться и гладко, и не гладко. Сплайны Безье требуют определения дополнительных опорных точек в обоих этих случаях, а сплайны Кэтмулла - Рома - только в случаях негладкого сопряжения.
Математическое описание элементарного отсека Кэтмулла - Рома на четырех опорных точках Pi(xi, y) где i = 0, ..., 3 - номер точки, имеет вид
x = 0,5(-1(1 -1)2 x0 + (2-5t2 + 3t3)x1 +1(l + 4t-3t2)x2 - t2 (1 -1)x3), (1)
y = 0,5(-t(1 -1)2 Уо + (2 -5t2 + 3t3)y1 +1(1 + 4t-3t2)y2 - t2 (1 -1)y), (2) где t - параметр.
При изменении параметра t в диапазоне от 0 до 1 формируется криволинейный отсек сплайна, соединяющий точку Р1 с точкой Р2. Изгибы отсека в его концевых точках определяются направлениями и длинами векторов касательных, проведенных через эти точки. Касательные параллельны хордам, соединяющим предыдущую и последующую (по отношению к каждой концевой точке) опорные точки. При отсутствии изломов для Pi - это хорда Р0Р2, а для Р2- хорда Р1Р3. Для получения излома в некоторой точке Pj нужно ввести две дополнительные опорные точки Pj, Pj, так как Pj является концом (end) предыдущего и началом (begin) следующего отсека кривой. Меняя положение дополнительных точек Pj, Pj, можно изменять направление каждой
хорды, проходящей через Pj, и задавать желаемый вид излома кривой в выбранной опорной точке отсека. Например, для получения излома в т. P1 в начале элементарного отсека Кэтмулла - Рома нужно строить его на опорных точках P1b, P1;P2,P3. При этом возникает вопрос: как выбрать положение дополнительной опорной точки P1b ? Она управляет направлением касательной, проведенной через точку P1, и степенью выпуклости или вогнутости отсека кривой вблизи P.
Известно, что угол наклона касательной к отсеку Кэтмулла - Рома в точке Pj определяется направлением хорды Pj-1Pj+1, а тангенс этого угла tgoj
описывается выражением
tgOj = (dy / dx) = (dy / dt) / (dx / dt) = ( - yj_x) / (+1 - x^), (3)
в котором все координаты известны. Если в качестве Pj-1 выступает дополнительная опорная точка Pj (, yj ) ,то (3) принимает вид
^ = (+1 - У))/(+1 - х)),
(4)
где две неизвестные координаты х),у) должны быть как-то определены.
Процесс нахождения координат х), у) можно формализовать. Для этого накладывается простое дополнительное условие: отсек между точками Р].иР].+1 должен точно проходить через промежуточную точку Рт. Тогда при
выборе опорных точек, которые должны стать началами и концами отсеков составной кривой, предварительно нужно выделить отсеки с изломами, и для каждого из них предусмотреть промежуточную точку. Если есть возможность, то для описания очередного отсека с изломом отводится пять исходных опорных точек, при этом средняя опорная точка используется как промежуточная. Если такой возможности нет или расстояния между исходными опорными точками велики, промежуточные точки могут ставиться экспертом. Точка Рт служит только для нахождения координат дополнительной опорной точки и не участвует в дальнейших графических построениях, поэтому ее дальнейшее хранение в базе данных не требуется.
Для рассматриваемого примера прохождение элементарного отсека Кэтмулла - Рома через промежуточную точку Рт (хт, ут) дает выражения
2х = -0,125х) + 1,125х, +1,125х2 -0,125х3,
т ' 1 ' 1 ' 2 ' 3 '
2ут =-0,125у) +1,125у1 + 1,125у2 -0,125Уз,
где принято условие: текущая точка отсека совпадает с Рт при ^ = 0,5.
Тогда координаты хьг, у1 однозначно находятся по формулам
Х = 9( + х2 )-хз 16хт,
У1 = 9 (У1 + У 2 )-Уз -16 УтВ случае излома в конечной точке элементарного отсека вводится дополнительная опорная точка Р2е. Ее координаты находятся аналогичным образом.
Для хранения координат исходных и дополнительных опорных точек создается информационная структура в виде списка. Фрагмент структуры списка показан на рис. 1, где широкими стрелками показана последовательность элементов списка.
Рис. 1. Фрагмент списковой структуры данных для негладкой кривой
Каждый элемент списка содержит набор из трех точек (их координат). Составная кривая точно проходит через точки без верхнего индекса. Точки с верхним индексом Ь - это дополнительные опорные точки, позволяющие получать изломы кривой в начальных точках отсеков составной кривой. Точки с верхним индексом е позволяют получать изломы кривой в конечных точках отсеков. Если излома кривой в данной точке не предполагается, содержимое дополнительных элементов списка получает соответствующее значение (признак) в зависимости от выбранного типа данных.
Описанная организация списка дает возможность унифицировать его обход для любого отсека кривой. Закон обхода элементов списка следующий: РЬ ^ РЬ ^ Pj+l ^ ре+1. Он показан на рис. 1 последовательностями узких
стрелок. Если при обращении к элементу списка Рь оказывается, что он не содержит координат (в точке Р нет излома), то алгоритм обхода делает «шаг назад» и в качестве начальной точки отсека выбирает РЬ-1 . В этом случае возникает закон обхода: РЬ-1 ^ РЬ ^ Р+ ^. Если при обращении к элементу списка Р+ оказывается, что он не содержит координат (в точке РЬ+1 нет излома), то алгоритм обхода делает «шаг вперед» и в качестве конечной точки отсека выбирает Р+2. В этом случае возникает закон обхода:
^ Р ^ Р ^ Р
+1 ^ Ь+2 •
Обсуждение
Особенности применения и реализации описанного подхода заключаются в следующем. На рис. 2 для примера показан вид кривой, состоящей из трех отсеков Кэтмулла - Рома.
Рис. 2. Негладкая кривая из трех отсеков
Ее форму задают шесть опорных точек Р0,..., Р5. В точке Р2 первый и второй отсеки сопрягаются гладко, а в точке Р3 предусмотрен излом кривой, значит, направления касательных ко второму и третьему отсекам в точке Р3
изменяются. Для этого введены две дополнительные опорные точки Р3е и Р3Ь. Касательные ко второму и третьему отсекам в точке Р3 параллельны хордам Р2Рр, Р3ЬР4. Точки Р0 и Р5 - начальная и конечная опорные точки кривой. В соответствии со свойствами кривой Кэтмулла - Рома они не входят в отображаемые отсеки и потому их связь с другими опорными точками показана штриховыми линиями
В табл. 1 показано соответствие опорных точек, выбранных для построения трех отсеков кривой, обозначениям точек элементарного отсека Кэтмулла - Рома.
Таблица 1
Соответствие между опорными точками трех отсеков кривой и точками элементарного отсека Кэтмулла - Рома
Номера отсеков Точки отсека сплайна
P) Pi P2 P3
1 P) Pi P2 P3
2 Pi P2 P3 P
3 Pb P3 P4 P5
Ниже представлен исходный код на языке программирования C#. Он определяет опорные точки составной кривой с использованием списка, показанного на рис. 1.
Point2d p0, pi, p2, p3;
for (int j = 1; jccPointS.Count - 2; j++)
{
p0 = cPoints[j] . locationBegin == null ? cPoints[j-1].location: cPoints[j].locationBegin;
pi = cPoints[j].location;
p2 = clPoints[j+1].location;
p3 = cPoints[j+1] . locationEnd == null ? cPoints[j+2].location : cPoints[j+i].locationEnd;
DrawCatmullRomSegment(p0, pi, p2, p3); }
В коде определены следующие переменные:
cPoints - список, каждый элемент которого содержит набор координат трех опорных точек Pj , Pj и P^ ;
j - номер точки в списке;
p0, pi, p2, p3 - набор отобранных точек, по которым будет строиться отсек кривой;
location, locationEnd, locationBegin - экземпляры класса Point2d, описывающие координаты точек, через которые проходит кривая (location), дополнительных точек, которые задают излом в конце предыдущего отсека (locationEnd), и дополнительных точек, которые задают излом в начале следующего отсека (locationBegin);
DrawCatmullRomSegment - метод, предназначенный для расчета и визуализации точек отсека. Координаты промежуточных точек отсека вычисляются по математическим выражениям (1),(2).
Цикл «запускается» по индексу j, при этом значение индекса устанавливается в 1. Это необходимо для того, чтобы в случае отсутствия излома в первой точке составной кривой (Pi на рис.2) была возможность сделать шаг назад и получить координаты предыдущей опорной точки (P0), через которую первый сегмент не проходит. Цикл повторяется, пока j<cPoints .Count-2. Это дает возможность проанализировать каждую точку списка.
Переменным p1 и p2 присваиваются координаты опорных точек, через которые проходит составная кривая. При определении значения переменной p0 сначала рассматривается (анализируется) cPoints[j] .locationBegin на наличие в ней числового значения (дополнительной опорной точки, позволяющей получить излом). Если дополнительная опорная точка отсутствует и cPoints[j].locationBegin=null (излома нет), то берется предыдущая точка списка cPoints[j-1].location (в точке j будет гладкое сопряжение отсеков), иначе берется cPoints[j].locationBegin.
Аналогичные действия выполняются с точкой p3. Сначала проверяется наличие дополнительной опорной точки с номером j+1), проверяется условие cPoints[j + 1] .locationEnd == null. Если на конце отсека не предусмотрен излом, переменной p3 присваивается значение cPoints[j+2].location, иначе присваивается cPoints[j + 1].lo-cationEnd.
Выводы
Предложен простой способ управления направлениями касательных, определяющих изгиб отсека кривой. Применение способа позволяет получать негладкие кривые любой желаемой формы. Реализующий способ алгоритм гарантирует, что составная кривая будет проходить через все опорные точки, за исключением первой и последней, как это следует из свойств кривой Кэт-мулла - Рома. Предлагаемый способ отличается от обычной интерполяции сплайнами Кэтмулла - Рома, Акимы, В-сплайнами и бета-сплайнами возможностью получения изломов в опорных точках. Способ отличается от интерполяции сплайнами Безье и Эрмита тем, что отсутствует необходимость задавать касательные к отсекам в случае их гладкого сопряжения. Отличие от сплайн-интерполяции Кочанек - Бартельса заключается в том, что не требуется экспертная настройка параметров интерполянта. Способ моделирования и его реализация могут быть применены в системах геоинформатики, автоматизации обучения и научных исследований.
Библиографический список
1. Косников, Ю. Н. Применение радиальных базисных функций в научной визуализации / Ю. Н. Косников // Научная визуализация. - 2013. - Т. 5, № 1. -С. 38-47. - URL: https://elibrary.ru/item.asp?id=20171352
2. Шикин, Е. В. Кривые и поверхности на экране компьютера. Руководство по сплайнам для пользователей / Е. В. Шикин, Л. И. Плис. - Москва : ДИАЛОГ-МИФИ, 1996. - 223 с.
3. Yuksel, C. On the parameterization of Catmull-Rom curves / C. Yuksel, S. Schaefer, J. Keyser // Proceeding ACM Joint Conference on Geometric and Physical Modeling (USA, San Francisco, 05-08 October 2009). - 2009. - P. 47-53.
4. Barsky, B. A. Computer Graphics and Geometric Modeling Using Beta-splines / B. A. Barsky // Springer. - 2013. - 157 р.
5. Akima, H. A. New Method for Interpolation and Smooth Curve Fitting Based onLocal Procedure / H. Akima // Journal of the Association for Computing Machinery.- 1970. -Vol. 17. - P. 589-602.
6. Bica, A. M. Optimal Alternative to the Akima's Method of Smooth Interpolation Applied in Diabetology / A. M. Bica, M. Degeratu, L. Demian, E. Paul // Surveys in Mathematics and its Applications. - 2006. - Vol. 1. - P. 41-49.
7. Salomon, D. Transformations and Projections in Computer Graphics / D. Salomon // Springer. - 2006. - 283 p.
8. Косников, Ю. Н. Математическое описание пространственных форм сплайнами Безье в задачах визуализации / Ю. Н. Косников, А. В. Новиков // Проблемы информатики в образовании, управлении, экономике и технике : сб. ст. XIX Меж-дунар. науч.-техн. конф. (г. Пенза, ПГУ, 24-25 октября 2019 г.). - Пенза : Приволжский Дом знаний, 2019. - С. 90-96.
9. Kochanek, D. Interpolating Splines with Local Tension, Continuity and Bias Control / D. Kochanek, R. Bartels // SIGGRAPH '84 Proceedings of the 11th Annual Conference on Computer Graphics and Interactive Techniques. - ACM, 1984. - Р. 33-41.
References
1. Kosnikov Yu. N. Nauchnaya vizualizatsiya [Scientific visualization]. 2013, vol. 5, no. 1, pp. 38-47. Available at: https://elibrary.ru/item.asp?id=20171352 [In Russian]
2. Shikin E. V., Plis L. I. Krivye i poverkhnosti na ekrane komp'yutera. Rukovodstvo po splaynam dlya pol'zovateley [Curves and surfaces on the computer screen. Manual on splines for the user]. Moscow: DIALOG-MIFI, 1996, 223 p. [In Russian]
3. Yuksel C., Schaefer S., Keyser J. Proceeding ACM Joint Conference on Geometric and Physical Modeling (USA, San Francisco, 05-08 October 2009). 2009, pp. 47-53.
4. Barsky B. A. Computer Graphics and Geometric Modeling Using Beta-splines Springer, 2013, 157 p.
5. Akima H. A. Journal of the Association for Computing Machinery. 1970, vol. 17, pp. 589-602.
6. Bica A. M., Degeratu M., Demian L., Paul E. Surveys in Mathematics and its Applications. 2006, vol. 1, pp. 41-49.
7. Salomon D. Transformations and Projections in Computer Graphics. Springer, 2006, 283 p.
8. Kosnikov Yu. N., Novikov A. V. Problemy informatiki v obrazovanii, upravlenii, ekonomike i tekhnike: sb. st. XIXMezhdunar. nauch.-tekhn. konf. (g. Penza, PGU, 2425 oktyabrya 2019 g.) [Problems of Informatics in education, management, Economics and technology : collection of articles of the XIX Intern. science.-tech. conf. (Penza, PSU, October 24-25, 2019)]. Penza: Privolzhskiy Dom znaniy, 2019, pp. 90-96. [In Russian]
9. Kochanek D., Bartels R. SIGGRAPH '84 Proceedings of the 11th Annual Conference on Computer Graphics and Interactive Techniques. ACM, 1984, pp. 33-41.
Косников Юрий Николаевич
доктор технических наук, профессор, кафедра информационно-вычислительных систем, Пензенский государственный университет
(Россия, г. Пенза, ул. Красная, 40) E-mail: [email protected]
Kosnikov Yuriy Nikolaevich
doctor of technical sciences, professor,
sub-department of information
and computing systems,
Penza State University
(40 Krasnaya street, Penza, Russia)
Зимин Алексей Петрович старший преподаватель, кафедра информационно-вычислительных систем, Пензенский государственный университет
(Россия, г. Пенза, ул. Красная, 40) E-mail: [email protected]
Новиков Алексей Валерьевич аспирант,
Пензенский государственный университет
(Россия, г. Пенза, ул. Красная, 40) E-mail: [email protected]
Zimin Aleksey Petrovich senior lecturer,
sub-department of information and computing systems, Penza State University (40 Krasnaya street, Penza, Russia)
Novikov Aleksey Valerievich postgraduate student, Penza State University (40 Krasnaya street, Penza, Russia)
Образец цитирования:
Косников, Ю. Н. Моделирование и визуализация негладких кривых / Ю. Н. Кос-ников, А. П. Зимин, А. В. Новиков // Модели, системы, сети в экономике, технике, природе и обществе. - 2019. - № 4 (32). - С. 65-74.