下午好,绘制在不连续的步骤
背景
我的问题涉及使用不连续的步骤在空间中的任意圆弧绘制的弧。然而,这是独一无二的,因为我不是以典型的意义来画画。我正在设计的固件是用于CNC磨机的gcode解释器,它将命令转换为步进电机运动。现在,我已经在这个网站上发现了一个类似的问题,但是建议的方法论(Bresenham算法)似乎不适用于在空间中移动对象,因为它只依赖于计算圆的一个八分圆,然后镜像关于剩余的对称轴。此外,在两个任意角度之间计算弧线的规定方法依赖于三角函数(我正在微控制器上实现,如果可能的话,希望避免代价高昂的触发函数),并且不会采取超出范围的步骤。最后,该算法仅被设计为在一个旋转方向上工作(例如逆时针)。
问题
因此,在实际的问题:有谁知道可以用“画”在不连续的步骤任意圆弧,同时还给予对于角方向的通用算法(CW/CCW)?最终的实现将使用C语言完成,但是针对该问题的语言是无关紧要的。
预先感谢您。
参考
SO张贴上绘制采用布氏算法的简单循环:描述布氏算法
"Drawing" an arc in discrete x-y steps
维基页面一圈
http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
G代码指令执行(见。 G2和G3)
http://linuxcnc.org/docs/html/gcode.html
没有微控制器已经在硬件支持浮点运算? – titus
是和不是。我目前支持的控制器没有硬件FP,但确实有适度优化的软件FP库(AVR Mega32)。我一直在考虑升级到支持硬件FP的更强大的32位AVR之一。我实际上已经计划通过将坐标转换为整数步来解决大部分FP问题,并且只有在事件不与电机步骤“对齐”时才会采用FP错误累加器。尽管如此,我仍然乐于接受任何事情。将有4000步/英寸,如果它有任何区别。 – phobos51594
哦,另外,固定点也是一种选择,因为考虑到我使用的廉价机械部件,我甚至可以看到0.005的分辨率。过去的一些地方是可能比我的汽车花费更多并且可能足以产生错误积累的机器的领域。 – phobos51594