中易网

如何编写顺时针圆弧的逐点比较法插补算法程序

答案:3  悬赏:40  
解决时间 2021-02-10 03:33
如何编写顺时针圆弧的逐点比较法插补算法程序
最佳答案
无论哪个象限,只要算出圆弧起点坐标、终点坐标、圆弧半径、圆弧顺逆,就可以编程了。
全部回答
这是我自己编的一个程序仿真通过,控制核心板是51单片机可以参考: //第一象限顺弧 #include<reg51.h> //#define xe 10 //终点横坐标 //#define ye 0 //终点纵坐标 //#define x0 10 //起点横坐标 //#define y0 0 //起点纵坐标 //#define R 10 //半径 void xzRotateStep(); // X向走一步 void yzRotateStep(); // -x向走一步 void xfRotateStep(); // y向走一步 void yfRotateStep(); // -y向走一步 void d1shun(); //第一象限顺弧 void d4shun(); //第二象限顺弧 void d3shun(); //第三象限顺弧 void d2shun(); //第四象限顺弧 int kx=0x01; int ky=0x10; // void display(int x) { int i,y; for(i=x;i>0;i--) for(y=100;y>0;y--); } void main() { d1shun(); d4shun(); d3shun(); d2shun(); } void d1shun() { int F,xi,yi,count ;// (xi,yi)为动点坐标,F为偏差值,count为计数值。 int k=0; int kx= F=xi=0; yi=10; count=20; do{ if(F>=0) { yfRotateStep(); //-y向走一步 F=F-2*yi+1; xi=xi; yi=yi-1; } else { xzRotateStep(); //+x向走一步 F=F+2*xi+1; xi=xi+1; yi=yi; } count--; k++; P2=k; } while(count) ; //计数为0? } void d4shun() { int F,xi,yi,count ;// (xi,yi)为动点坐标,F为偏差值,count为计数值。 int k=0; F=xi=10; yi=0; count=20; do{ if(F>=0) { xfRotateStep(); //-x向走一步 F=F-2*xi+1; xi=xi-1; yi=yi; } else { yfRotateStep(); //-y向走一步 F=F+2*yi+1; xi=xi; yi=yi+1; } count--; k++; P2=k; } while(count) ; //计数为0? } void d3shun() { int F,xi,yi,count ;// (xi,yi)为动点坐标,F为偏差值,count为计数值。 int k=0; F=xi=0; yi=-10; count=20; do{ if(F>=0) { yzRotateStep(); //+y向走一步 F=F-2*yi+1; xi=xi; yi=yi-1; } else { xfRotateStep(); //-x向走一步 F=F+2*xi+1; xi=xi+1; yi=yi; } count--; k++; P2=k; } while(count) ; //计数为0? } void d2shun() { int F,xi,yi,count ;// (xi,yi)为动点坐标,F为偏差值,count为计数值。 int k=0; F=xi=-10; yi=0; count=20; do{ if(F>=0) { xzRotateStep(); //-x向走一步 F=F-2*xi+1; xi=xi-1; yi=yi; } else { yfRotateStep(); //-y向走一步 F=F+2*yi+1; xi=xi; yi=yi+1; } count--; k++; P2=k; } while(count) ; //计数为0? } void xzRotateStep() { int i; switch(kx) { case 0x01: kx=P1=0x02;display(200);for(i=0;i<20000;i++); break; case 0x02: kx=P1=0x04;display(200);for(i=0;i<20000;i++) ;break; case 0x04: kx=P1=0x01;display(200);for(i=0;i<20000;i++) ;break; } } void xfRotateStep() { int i; switch(kx) { case 0x01: kx=P1=0x04;display(200);for(i=0;i<20000;i++); break; case 0x04: kx=P1=0x02;display(200);for(i=0;i<20000;i++) ;break; case 0x02: kx=P1=0x01;display(200);for(i=0;i<20000;i++) ;break; } } void yzRotateStep() { int j ; switch(ky) { case 0x10: ky=P1=0x20;display(200);for(j=0;j<20000;j++);break; case 0x20: ky=P1=0x40;display(200);for(j=0;j<20000;j++);break; case 0x40: ky=P1=0x10;display(200);for(j=0;j<20000;j++);break; } } void yfRotateStep() { int j ; switch(ky) { case 0x10: ky=P1=0x40;display(200);for(j=0;j<20000;j++);break; case 0x40: ky=P1=0x20;display(200);for(j=0;j<20000;j++);break; case 0x20: ky=P1=0x10;display(200);for(j=0;j<20000;j++);break; } }
可以私聊我~
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
房屋缺少东南角,如何弥补风水缺陷?
芜湖市徽煌文化传媒有限公司这个地址在什么地
西伯昌问姜子牙:“怎样能得到天下
成都玉米批发市场在哪里?
寻找一些富有人生哲理的书
检测到你的手机无手机卡,怎么办
罗墩坑我想知道这个在什么地方
黄金烤翅我想知道这个在什么地方
网通和移动光纤的无线路由器通用吗?
空调挡板一直朝下对排水有影响吗
顺达汽车租赁在什么地方啊,我要过去处理事情
sata固态好还是nvme固态好
好又多连锁超市怎么去啊,有知道地址的么
中铁港航局三公司拖欠民工工资己二年之久,到
田家炳实验中学(西北门)我想知道这个在什么地
推荐资讯
梦见买汽车票没买到什么意思呢?
一餐吃多少碗饭好?男孩要健身
体育路/里城大院(路口)在哪里啊,我有事要去
下骆宅振兴家俱店怎么去啊,有知道地址的么
qq飞车在跑的时候怎么截图啊??
孔明茶庄地址有知道的么?有点事想过去
平板式扫描仪如何选
自己开店,连续4个月,亏了将近20万,放弃不
请问一下普通摩托车可不可以安装警报喇叭
五灵道观地址在什么地方,想过去办事
梦见刚生病康复的妈妈身穿白孝衣:我梦见已经
考研数学辅导刘金峰老师讲的怎样
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?