逐点比较法直线插补MATLAB(四个象限合并)
四个现象合并
·
直线插补四个象限合并
基本原理:
在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小偏差的方向进给(始终只有一个方向)。
一般地,逐点比较法插补过程有四个处理节拍,如图所示:

Xs = input('请输入起点横坐标XIn X0= ');
Ys = input('请输入起点纵坐标YIn Y0= ');
Xe = input('请输入终点横坐标XIn Xe= ');
Ye = input('请输入终点纵坐标YIn Ye= ');
h= input('输入步长\nh= ');
x=[Xs,Xe];
y=[Ys,Ye];
clc;
hold off;
plot(x,y);
hold on;
Xlength=Xe-Xs;
Ylength=Ye-Ys;
NXY= (abs(Xlength)+abs(Ylength))/h;
Fm=0;
X(1)=Xs;
Y(1)=Ys;
xlabel('X');
ylabel('Y');
if((Xe-Xs)>0&(Ye-Ys)>0);
title(['逐点比较法第一象限直线插补']);
for(i=1:NXY)
if(Fm>=0)
X(i+1)=X(i)+h;
Y(i+1)=Y(i);
Fm=Fm-Ylength;
else
X(i+1)=X(i);
Y(i+1)=Y(i)+h;
Fm=Fm+Xlength;
end
text((X(i)+X(i+1))/2,(Y(i)+Y(i+1))/2,[num2str(i)]);
temp_x=[X(i),X(i+1)];
temp_y=[Y(i),Y(i+1)];
plot(temp_x,temp_y,'r-');
hold on;
pause(0.5);
end
elseif ((Xe-Xs)<0&(Ye-Ys)>0);
title(['逐点比较法第二象限直线插补']);
for(i=1:NXY)
if(Fm<=0)
X(i+1)=X(i)-h;
Y(i+1)=Y(i);
Fm=Fm+Ylength;
else
X(i+1)=X(i);
Y(i+1)=Y(i)+h;
Fm=Fm+Xlength;
end
text((X(i)+X(i+1))/2,(Y(i)+Y(i+1))/2,[num2str(i)]);
temp_x=[X(i+1),X(i)];
temp_y=[Y(i),Y(i+1)];
plot(temp_x,temp_y,'r-')
hold on;
pause(0.5);
end
elseif ((Xe-Xs)<0&(Ye-Ys)<0);
title(['逐点比较法第三象限直线插补']);
for(i=1:NXY)
if(Fm<=0)
X(i+1)=X(i)-h;
Y(i+1)=Y(i);
Fm=Fm-Ylength;
else
X(i+1)=X(i);
Y(i+1)=Y(i)-h;
Fm=Fm+Xlength;
end
text((X(i)+X(i+1))/2,(Y(i)+Y(i+1))/2,[num2str(i)]);
temp_x=[X(i),X(i+1)];
temp_y=[Y(i),Y(i+1)];
plot(temp_x,temp_y,'r-');
hold on;
pause(0.5);
end
else ((Xe-Xs)>0&(Ye-Ys)<0) ;
title(['逐点比较法第四象限直线插补']);
for(i=1:NXY)
if(Fm<=0)
X(i+1)=X(i)+h;
Y(i+1)=Y(i);
Fm=Fm-Ylength;
else
X(i+1)=X(i);
Y(i+1)=Y(i)-h;
Fm=Fm-Xlength;
end
text((X(i)+X(i+1))/2,(Y(i)+Y(i+1))/2,[num2str(i)]);
temp_x=[X(i),X(i+1)];
temp_y=[Y(i),Y(i+1)];
plot(temp_x,temp_y,'r-')
hold on;
pause(0.5);
end
end
hold off;
感觉跨象限还是有点奇怪,再研究研究
四个象限分开https://blog.csdn.net/wang1290865309/article/details/127434780?spm=1001.2014.3001.5502
更多推荐

所有评论(0)