谁有用C语言编写的直线,圆弧插补程序

谁有用C语言编写的直线,圆弧插补程序,小弟重谢
小弟做毕业设计用,汇编的也行,是数控方面的,是子程序。直线的插补程序呢?

给你推荐一本书,<计算机图形学基础>唐泽圣,周嘉玉,李新友写的,我们以前上课用的,上面有常用的直线和圆弧算法,比如数值微分法生成直线,逐点比较法插补圆弧,角度DDA法产生圆弧,基本都有C语言的源程序.你可以搜搜这本书,本来都有源程序的,后来给删掉了~~
贴一个别人的
/*************************************************************************
Function: int ArcXY(double dfx0,double dfy0,double dfrx,
double dfry,int angle);
Description: 在X-Y轴所构成的平面上,以圆弧运动的方式从目前位置经过指
定的参考点到目的点。调用此函数成功将增加运动命令的库存数目。
Parameters: dfx0, dfy0 参考点的X-Y轴座标值
dfrx, dfry 圆心的X-Y轴座标值
angle 插补角度
Calls: 无
Return Value: 大於或等於0 给予此运动命令的编码
小於0 失败,传回值的意义可参考错误信息代码
**************************************************************************/

#include <stdio.h>
#include <math.h>
int ArcXY(double dfx0,double dfy0,double dfrx, double dfry,int angle);
int symbol(double number);

main()
{

ArcXY(0,0,-3,5,360);
getch();

}
int ArcXY(double dfx0,double dfy0,double dfrx, double dfry,int angle)
{
FILE *f1;

double i,j,dx,dy,dfr,x,y,ang,step,f = 0.01;

int flag,tempx,tempy,statex,statey,direction = 1;

dfr = sqrt((dfrx - dfx0) * (dfrx - dfx0) + (dfry - dfy0) * (dfry - dfy0));

if(dfx0 == 0)
{
dfx0 = 1;
dfrx = dfrx + 1;
statex =1;
}
if(dfy0 == 0)
{
dfy0 = 1;
dfry = dfry + 1;
statey =1;
}

dfrx = 2 * dfx0 - dfrx;

i = dfx0 - dfrx;
j = dfy0 - dfry;

x = dfx0 ;
y = dfy0 ;

step = ang = 180 * 2 * asin(f/(2*dfr))/3.1415926;

if(((dfx0 > 0) && (dfy0 > 0)) || ((dfx0 < 0) && (dfy0 < 0)))
{
flag = direction;
}

if(((dfx0 < 0) && (dfy0 > 0)) || ((dfx0 > 0) && (dfy0 < 0)))
{
flag = -direction;
}

f1=fopen("c:\\c.txt","w+");

if(statex ==1)
{
x = x - 1;
}
if(statey ==1)
{
y = y - 1;
}

fprintf(f1,"%f,",x);
fprintf(f1,"%f\n",y);

while(ang < angle)
{
dx = f * (j + flag*(f * i)/(2 * dfr))/dfr;
dy = f * (i - flag*(f * j)/(2 * dfr))/dfr;
tempx = symbol(x);
tempy = symbol(y);

x = x + dx;
y = y + dy;

fprintf(f1,"%f,",x);
fprintf(f1,"%f\n",y);

if( (tempx !=symbol(x)) || (tempy != symbol(y)) )
{
flag = -flag;
}

i = i - dx;
j = j + dy;
ang = ang + step;

}

return 0;

}

int symbol(double number)
{
if(number > 0)
{
return 1;
}
else
{
return -1;
}
}
int ArcXY(double dfx0,double dfy0,double dfrx, double dfry,int angle); 这个就是子函数,你放到你需要的地方注意参数,按自己需要修改,要么添加返回值返回感兴趣的部分,要么添加参数按照传引用的方法取得,直线的有简单DDA算法的,需要的话明天打上,今天有点晚了.

参考资料:http://hi.baidu.com/lkmyygywvf/blog/item/c57c12efcd5891eccf1b3e6b.html

温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-18
你这是春季毕业的吧?
这是有50年历史的加工方式了,早期是光电跟踪的。
主要的运算是插值运算,就是将用户给的两点用直线或圆弧线连接起来,插补出加工图纸上没有的各个点。
先确定基本的XY轴向的每步距离,是机床的机电结构决定的。
在已有前后两点的坐标条件下,可能是有不同方向的圆连接起来,有不同的前进方向。
这都是直线方程,圆的方程,中学的标准课程,人家当年是用电子管算出来的,后来是用分立元器件拼凑的逻辑电路运算出来的,你们不至于不会吧?
用C语言就行了,

如果用汇编写,大学教了迭代方程近似求解,比调用书上的子程序功夫要深,如果你的教师有职业道德OK,给你们的分数应该高些,对于你们今后的人生有意义。

特别要注意,脉冲当量,最终要求可以给定,预先设定插补直线或圆的前进线速度!XY的速度是原始的。

高级的,要切圆锥,斜面,就是三维的,要学习空间解析几何课程,那里有现成的变换矩阵。
现在的导弹、空间防御系统,基础之一就是导弹的坐标系与地球的坐标系矩阵变换,我又联系到国防教育,爱国主义教育。
参考 http://zhidao.baidu.com/question/27249314.html?si=9

齿轮是工业生产中的重要基础零件,其加工技师和加工能力反映一个国家的工业水平。实现齿轮加工数控倾和自动化、加工和检测的一体化是目前齿轮加工的发展趋势。

基于开放式运动控制器的数控滚齿系统的研究

摘要:讨论了一种基于开放式运动控制器的数控滚齿体系结构,通过对其进行深入的研究,在国内首次提出了电子差动
齿轮箱的概念,开发出相应的数控滚齿软件,给出了运动控制系统软件的基本模块,以及该数控系统成功用于YG6132B
机械滚齿机数控改造的实例。
序词:数控 滚齿机床 运动控制
中图分类号:TG659
前言
齿轮被广泛地应用于机械设备的传动系统中,滚齿是应用最广的切齿方法〔1 〕,传统的机械滚齿机床机械结构非常复杂,一台主电机不仅要驱动展成分度传动链,还要驱动差动和进给传动链,各传动链中的每一个传动元件本身的加工误差都会影响被加工齿轮的加工精度,同时为加工不同齿轮,还需要更换各种挂轮调整起来复杂费时[2],大大降低了劳动生产率。
以德国西门子、日本发那科公司数控系统为主流的数控滚齿机的出现,大大提高了齿轮加工能力和加工效率。我国目前真正能够生产数控滚齿机的只有2-3个厂家,且使用的多是德国西门子数控系统,加工中模数齿轮,没有自主产权的核心技术,缺少国际竞争力。
注意到以上问题,并根据近来数控技术,尤其是开放式运动控制器飞速发展的现状,本文针对小模数、少齿数、大螺旋角斜齿轮滚齿加工迫切要求数控化的实际需求,进行了深入的研究,成功地开发了了一套基于开放式运动控制器的数控滚齿系统并用于实际生产。
1 基于开放式运动控制器的数控体系结构
该体系结构的核心是一块具有PC104 总线并且自带高速DSP 芯片的开放式多轴运动控制卡,与嵌入式PC 主机构成多处理器结构,提供4路16 位D/A 模拟电压(+/-10V)控制信号,4路4倍频差动式光电编码器反馈信号接口,输入信号频率最高可达8MHZ,32 路光电隔离输入输出接口。可编程数字PID+速度前馈+加速度前馈滤波方式,卡上自带DSP 芯片以实现实时高速插补、计算功能,可完成空间直线、圆弧插补,大大减轻了主机负担,还提供了程序缓冲区,降低了对主机通讯速度的要求[3]。该运动控制卡通过PC104 总线和计算机通讯,一方面将从各控制轴采集到的数据送给主机进行计算,另一方面,将主机根据工艺及数学模型进行运算生成的运动控制指令经过进一步处理送各轴伺服驱动器,完成各轴的运动控制,加工出满足工艺要求的合格零件。由于使用标准的PC104 型工控机作
为主机,采用标准化接口,可灵活地选用电机、驱动装置和反馈元件,支持包括乙太网甚至是Internet 网在内的多种网络协议及拓扑结构,可方便地实现远程控制,组网技术十分灵活而且技术成熟[4]。适应网络化数控的未来发展要求,系统硬件控制部分结构如图1 所示。

图1基于开放式运动控制器的数控系统结构
2
2系统控制软件
本系统控制软件是在纯DOS 下用C 语言开发的,DOS 系统的开放性、单任务、准确的时钟中断管理及其良好的稳定性,为工业化生产提供了可靠的保证。软件框图如图2 所示。其中系统初始化包括自制小汉字字模的装入,显示器图形方式的初始化,控制器滤波参数的整定等;系统诊断模块的作用是监控各被控轴的运动状态,如:各轴有无运动误差超限、伺服报警、运动完成、限位开关动作等;实时控制模块,由中断服务程序实现,它在每个时钟中断周期内读入各轴位置,根据加工对象的加工工艺要求计算出新的运动控制指令送运动器解释执行。
3基于电子齿轮箱的数控滚齿系统

参考资料:bba127d3abb9d8b4

第2个回答  2008-10-18
分多就是好
第3个回答  2008-10-18
你怎么也给个驱动调用吧,不然怎么写。
G01你想用到这上面来。难。。。
第4个回答  2008-10-18
插补程序? 插值吧 曲线拟合?
相似回答