УДК 681.325.5:518.5
ЦИФРОВЫЕ ИНТЕРПОЛЯТОРЫ КРИВОЛИНЕЙНЫХ ТРАЕКТОРИЙ © 2011 г. A.A. Булатников, И.Н. Булатникова
Кубанский государственный технологический университет, г. Краснодар
Kuban State Technological University, Krasnodar
Разработан и предложен целочисленный алгоритм цифровой интерполяции произвольных плоских кривых. Алгоритм весьма удобен как для программной (микроконтроллеры), так и для аппаратной реализации (жесткая логика) и, будучи целочисленным, является быстродействующим.
Ключевые слова: целочисленные быстродействующие алгоритмы; микроконтроллеры; управление механизмами.
The Digital Interpolaters of Curve Trajectories The integer algoritm for digital interpolation of arbitrary planar curves was developed and proposed. The algorithm is very suitable for software (microcontrollers) and for hardware implementation. The algoritm is very quick because it is integer.
Keywords: integer fastmaking algorithms; microcontrollers; control of mexanisms.
Алгоритмы цифровой интерполяции широко используются в станках с числовым программным управлением, в графических дисплеях и графопостроителях, а в последнее время и в ма-нипуляционных роботах (электронная кинематика) [1].
Оставим вне нашего внимания часто используемые алгоритмы линейной, круговой и параболической интерполяции [2]. Более актуальными являются такие же алгоритмы для произвольных плоских кривых (экспонента, гипербола, логарифмическая кривая, эллипс и другие). Потребность в них возникает, например, при решении задач электронной кинематики неаналитическими методами.
Нами был разработан обобщенный алгоритм цифровой интерполяции, практически применимый для многих плоских кривых. В его основе лежит алгоритм цифровой интерполяции, примененный в отношении касательной вблизи текущего узла интерполяции произвольной кривой /(х, у) = 0 . Параметры касательной изменяются при переходе в следующий узел. Оценочная функция Е (х, у) также корректируется при переходе из узла в узел.
По аналогии с корректировкой оценочной функции из-за изменения координат текущего узла вводится корректировка крутизны касательной в новом узле. При переходе через точку, где
ее крутизна равна 1, вводится еще одна корректировка (из-за смены начального значения Е0 оценочной функции: добавляется разница между новым и старым выражениями для Е0 ).
Таким образом, процедура цифровой интерполяции произвольной кривой заменяется интерполяцией на каждом шаге касательной к кривой вблизи текущего узла интерполяции.
В качестве АХг- и АУ- — основных параметров цифровой линейной интерполяции — используем проекции отрезка касательной на оси х и у в точке (х{, у1).
Рассмотрим три случая задания плоских кривых:
а) явное задание функцией вида у = / (х) АУ = ц[к/'(х) + 0,5]^; АУ = ц[к/'(х) + 0,5]м;
АХ = ц • к;
б) неявное задание функцией вида ¥ (х, у) = 0
AY = ±|[k
dF
dx
+ 0,5]int ; AX = ±|[k
dF
dy
+ 0,5]
int;
в) параметрическое задание кривой
X = fx(t), У = fy(t)
AY = |[k % + 0,5]int; AX = |[k f + 0,5]^ ,
dt
dt
где | — коэффициент (+1, -1), учитывающий направление обхода кривой; k — длина отрезка касательной, т. е. масштабирующий коэффициент 2 п (п е N), выбираемый по соображениям удобства умножения на него и допустимой ошибки округления АХ и А У до целого.
Приведем математическую модель процедуры цифровой интерполяции и представим ее в виде целочисленного алгоритма с учетом реализации на микроконтроллерах. (Все последующие выкладки сделаны из геометрических соотношений при интерполяции прямой).
1. Начальное значение АХ = у(х0, у0) и АУ = ф(х0, Уо) зависит от вида кривой интерполяции и вычисляется по несложным алгоритмам без операций умножения и деления и других длинных операций
Ei+1 =
Eo И
|AXo| - 2AYo| при |AXo| >|AYo|; |AYo| - 2AXo\ при |AXo| <
2. Правило выбора очередного /-го шага 0=1,2, ...)
а) при |АХ,| > \АЦ
ох (,) = signАX,;
[0, если Е• > 0; \signАy,если Е{ < 0;
Oy (i) = ■
б) при |АХ,| < \АУ/\
8 у (,) = signА У;
[0, если Е,- > 0;
8х (/) = I
^пАХ,, если Е, < 0.
3. Вычисление координат нового узла интерполяции
х,+1 = х1 + 8х (/); У,+1 = У, + 8у0').
4. Вычисление новых АХ,+1 и АУ,+1 АХ,+1 = У(х,+1, Уг+1); АУг+1 = Ф(х,+1, Уг+1).
5. Корректировка оценочной функции Е1 из-за изменения координат следующего (г +1) -го узла
а) при |АХ,| > |АУ/|
Ei+1 =
\Е, + 2(|АХ,+1 - |АУ,+1), если Е1 < 0; - 2АУ,+1, если > 0;
[Е, + 2(АУ,+1 - |АХ,+1), если Е1 < 0; |Е, - 2 АХ,+1, если Е^ > 0.
б) при |AX,| < |Ay|
6. Корректировка оценочной функции Е, из-за изменения ее начального значения Е0 (пункт 1)
а) при |АХ,| > |АУ,|
Ом = Е,+1 - 2(|АУМ\- |АУ-|) + (|АХ,+1 - |АХ,|);
б) при |АХ,| < |АУ,|
Ом = Е,+1 - (| АУМ\- |АУ-|) + 2(| АХ,+1 - |АХ, |) .
7. Корректировки по п. 5 и 6 можно объединить в одну, добившись сокращения числа арифметических операций:
а) при |АХ,| > |АУ,|
С+1 = Е{ + |АХ,+1 - 2|АУ{+1\ - |АХ,| • signE,;
б) при |АХ,| < |АУ,|
С+1 = Е{ + |АУ-+1 - 2|АХ,+1 - |Ау| • signE,.
Таким образом, пункты 5 и 6 исключаются из алгоритма и заменяются пунктом 7.
8. Корректировка оценочной функции 0{+1 из-за смены выражения оценочной функции в ,-м узле интерполяции:
а) при переходе от |АХ,| > |Ау| к |АХ,+1 < |Ау+1
Е,+1 = Ом + (АУ,+1 - 2АХ,+1) - (АХ,| - 2АУ11);
б) при переходе от |АХ,| < |Ау| к |АХ,+1 > |Ау+1
Е,+1 = Ом + (АХ,+1 - 2АУ+ф - (АУ - 2АХ,);
в) в остальных случаях (их большинство)
Е,+1 = +1.
9. Проверка конца кривой, если нет, то переход к п. 2 алгоритма (п. 1—9).
Применительно к конкретной кривой обобщенный алгоритм (п. 1—9) упрощается за счет применения правил преобразования математических выражений (п. 7, 8).
Алгоритм (п. 1—9) апробирован на десятках кривых (начиная от экспоненты и до кривой Гаусса).
Для четырех кривых производилось экспериментальное определение погрешностей. Для этого на персональном компьютере определялись точные
координаты кривой и такие же координаты, рассчитанные по предложенному алгоритму путем эмуляции системы команд микроконтроллеров.
влечения операций умножения и деления. Хотя он и реализует сложные аналитические кривые. Цело-численность алгоритма (п. 1—9) обеспечивает вдобавок еще и повышенное его быстродействие.
Экспериментальные данные
№ Наименование кривой AX = y(x, y) AY = ф(х, y) Максимальная абсолютная ошибка
,4=100 В=10 4=250 В=50 4=500 В=100 4=1000 В=200
1 Экспонента В Ay 0,6513 0,6589 0,6612 0,6712
2 Логарифмическая B+x [[ + 0>5]int 0,8419 0,8501 0,8516 0,8621
3 Гипербола x -y 0,5908 0,5913 0,6091 0,6104
4 Квадратный корень 2By A2 0,4813 0,4927 0,5055 0,5161
Примечание. А и В — целые константы масштабирования по осям y и х, соответственно.
Ошибка определялась как минимальное отстояние по вертикали (при крутизне кривой до 45 ° ) или по горизонтали (при крутизне свыше 45 ) от теоретической кривой (таблица).
Существенным достоинством предложенного алгоритма является его простая реализация как программно (на микроконтроллерах), так и аппа-ратно (жесткая логика), так как он целочисленный, т.е. оперирует только с целыми числами и без при-
Литература
¡.Механика и искусство конструирования в эпоху ЭВМ / Фролов К. В. [и др.] // Изобретатель и ра-ционизатор. 1986. № 12. С. 16-17.
2. Анишин Н. С. Машинная графика: алгоритмы цифровой интерполяции и их реализация на микропроцессорах // Методы и средства обработки сложной графической информации : тез. докл. на 2-й все-союз. конф. Горький, 1985. С. 7-8.
Поступила в редакцию 5 мая 2010 г.
Булатников Александр Андреевич — аспирант, Кубанский государственный технологический университет. E-mail: inkras@yandex.ru
Булатникова Инга Николаевна — канд. техн. наук, доцент, Кубанский государственный технологический университет. E-mail: inkras@yandex.ru
Bulatnikov Aleksandr Andreevich — post-graduate student, Kuban State Technological University. E-mail: inkras@yandex.ru
Bulatnikova Inga Nikolaevna — Candidate of Technical Sciences, assistant professor, Kuban State Technological University. E-mail: inkras@yandex.ru