版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上/该函数在VC+6.0下编译测试通过,可实现直线、圆弧、完整圆的逐点比较法插补;并可将插补函数计算出的数/据点写入xxx.txt文件中/若有任何疑问,欢迎邮件联系,/版权所有,侵权必究。转载时请注明来自大连理工机械工程学院Deanjiang#include<stdio.h>#include<math.h>#include<stdlib.h>/*/* 函数名: InsertPoint */* 功 能:控制机床各轴进给并将进给结果写入文件中*/* 参 数:double x, double y 插补点 单位:毫米*/* 说 明:与机床硬件
2、关联,每产生一个点调用一次*/*/void InsertPoint(double xCur,double yCur)extern FILE *fp;char ch=10;printf("xCur=%f,yCur=%fn",xCur,yCur);fprintf(fp,"%f,%f",xCur,yCur); fputc(ch,fp);/*/* 函数名: Judge_Quadrant */* 功 能:判断参数坐标的所在象限并返回相应象限值*/* 参 数:double xmm */*double ymm*/*/unsigned short Judge_Quadr
3、ant(double x, double y)unsigned short nDir;if (x>=0) /象限判断if (y>=0) nDir=1;return 1;else nDir=4;return 4;else if (y>=0) nDir=2;return 2;else nDir=3;return 3;/*/* 函数名: PBP_Line */* 功 能:逐点比较法直线插补*/* 参 数:double step步长mm*/*double XEnd, double YEnd插补终点mm*/*/void PBP_Line(double step, double XEnd
4、, double YEnd)double lDevVal; /偏差值double xCurVal=0,yCurVal=0; /当前点的实际位置long StepMount; /插补总步数long StepCount=0; /插补次数计数器unsigned short nDir; /当前点所在象限 nDir=Judge_Quadrant(XEnd,YEnd); /象限判断XEnd=labs(XEnd);YEnd=labs(YEnd);StepMount=(long) (XEnd+YEnd)/step;lDevVal=yCurVal*XEnd-xCurVal*YEnd; while (StepCo
5、unt<StepMount) /终点判别/if (lDevVal>=0) /偏差=0switch(nDir) case 1:xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 2:xCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 3: xCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 4:xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;lDevVal-=YEnd;
6、else /偏差<0switch(nDir) case 1:yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 2:yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 3:yCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 4:yCurVal-=step;InsertPoint(xCurVal,yCurVal);break;lDevVal+=XEnd;StepCount+; /*/* 函数名: PBP_Circle */*
7、 功 能:逐点比较法圆弧插补*/* 参 数:double step步长mm*/*double XStart,double YStart插补起点mm*/*double XEnd,double YEnd插补终点mm*/*double radius圆弧半径mm*/* bool bIsCW圆弧插补方向0或1 */*/void PBP_Circle(double step, double XStart, double YStart, double XEnd,double YEnd, double radius, int bIsCW)double lDevVal,goallDevVal;/当前误差和与终点
8、的差值double xCurVal=XStart,yCurVal=YStart;/当前坐标 unsigned short nDir;/象限long stepcount=0;/步数lDevVal=xCurVal*xCurVal+yCurVal*yCurVal-radius*radius;goallDevVal=(xCurVal-XEnd)*(xCurVal-XEnd)+(yCurVal-YEnd)*(yCurVal-YEnd);while(goallDevVal>=(step*step)|stepcount=0)if(lDevVal>=0)/误差大于等于零if(bIsCW=0)/逆圆
9、插补 nDir=Judge_Quadrant(xCurVal,yCurVal); switch(nDir)case 1:xCurVal-=step; InsertPoint(xCurVal,yCurVal);break;case 2:yCurVal-=step; InsertPoint(xCurVal,yCurVal);break;case 3: xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 4:yCurVal+=step; InsertPoint(xCurVal,yCurVal);break;else/顺圆插补 nDir=Judg
10、e_Quadrant(xCurVal,yCurVal); switch(nDir)case 1:yCurVal-=step; InsertPoint(xCurVal,yCurVal);break;case 2:xCurVal+=step; InsertPoint(xCurVal,yCurVal);break;case 3: yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 4:xCurVal-=step; InsertPoint(xCurVal,yCurVal);break;else/误差小于零if(bIsCW=0)/逆圆插补nDir=
11、Judge_Quadrant(xCurVal,yCurVal); switch(nDir)case 1:yCurVal+=step; InsertPoint(xCurVal,yCurVal);break;case 2:xCurVal-=step; InsertPoint(xCurVal,yCurVal);break;case 3: yCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 4:xCurVal+=step; InsertPoint(xCurVal,yCurVal);break;else/顺圆插补 nDir=Judge_Quadra
12、nt(xCurVal,yCurVal); switch(nDir)case 1:xCurVal+=step; InsertPoint(xCurVal,yCurVal);break;case 2:yCurVal+=step; InsertPoint(xCurVal,yCurVal);break;case 3: xCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 4:yCurVal-=step; InsertPoint(xCurVal,yCurVal);break;lDevVal=xCurVal*xCurVal+yCurVal*yCurVal-radius*radius;goallDevVal=(xCurVal-XEnd)*(xCurVal-XEnd)+(yCurVal-YEnd)*(yCurVal-YEnd);stepcount+;FILE *fp;/文件指针int main()double ft=1000.0*10/60/1000;int j,j1,jj;char fn10;printf("please input filename:n");/输入要写入数据的文件名,如pbp_circle.txtscanf("%s",
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业环境工程试题及答案
- 机械技术基础及设计 17
- 社区护理中的护理心理评估工具
- 室内薄型防火涂料施工工艺流程
- 口腔门诊部院内管理医疗废物管理制度
- 2025年湘潭遴选考试(案例分析与对策性论文)复习试题库及答案
- 机电工程检验批
- 晶片加工工操作模拟考核试卷含答案
- 口腔清洁剂制造工岗前技术传承考核试卷含答案
- 电机嵌线工岗前成果转化考核试卷含答案
- 微生物组数据隐私伦理
- 2026重庆水务环境集团所属重庆水务集团股份有限公司招聘42人笔试备考题库及答案解析
- 2026安徽安庆市宿松县事业单位招聘84人笔试备考试题及答案解析
- 实验室化学品泄漏应急演练脚本
- 2026黔东南公路建设养护有限公司招聘11人笔试参考题库及答案解析
- 2025版《广东省护理病历书写管理规范(试行)》
- 2026届重庆市高三二诊英语试题(含答案和音频)
- 山西大学保密工作制度
- 禁止业务员私下收款制度
- 银行保险机构消防安全管理指南(试行)原文下载
- 新版人教版九年级物理上册教案(完整版)教学设计
评论
0/150
提交评论