Графическое изображение Дуга в дискретных шагах

Добрый день,

Предпосылки
Мой вопрос касается построения произвольной дуги в пространстве с использованием дискретных шагов. Однако он уникален тем, что я не рисую на холсте в обычном смысле этого слова. Прошивка, которую я разрабатываю, предназначена для интерпретатора gcode для фрезерного станка с ЧПУ, который будет переводить команды в движения шагового двигателя. Я уже нашел аналогичный вопрос на этом самом сайте, но предложенная методология (алгоритм Брезенхэма) кажется несовместимой для перемещения объекта в пространстве, так как она основана только на вычислении одного октанта круга, который затем зеркально отражается. об остальных осях симметрии. Кроме того, предписанный метод вычисления дуги между двумя произвольными углами основан на тригонометрии (я реализую на микроконтроллере и хотел бы избежать дорогостоящих триггерных функций, если это возможно) и просто не предпринимать шаги, выходящие за пределы допустимого диапазона. Наконец, алгоритм предназначен только для работы в одном направлении вращения (например, против часовой стрелки).

Вопрос
Итак, перейдем к собственному вопросу: знает ли кто-нибудь об универсальном алгоритме, который можно использовать для «рисования» произвольная дуга с дискретными шагами с учетом углового направления (CW / CCW)? Окончательная реализация будет сделана на C, но язык для цели вопроса не имеет значения.

Заранее благодарю.

Ссылки
SO сообщение о рисовании простого круга с использованием алгоритма Брезенхема:
«Рисование» дуги дискретными шагами по xy

Wiki-страница, описывающая алгоритм Брезенхема для круга
http://en.wikipedia.org/wiki/Midpoint_circle_algorithm

Инструкции Gcode, которые должны быть реализованы (см. G2 и G3 )
http://linuxcnc.org/docs/html/gcode.html

6
задан Community 23 May 2017 в 12:07
поделиться