逐点比较法直线插补MATLAB(四个象限合并)

直线插补四个象限合并

基本原理:

在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小偏差的方向进给(始终只有一个方向)。

一般地,逐点比较法插补过程有四个处理节拍,如图所示:

逐点比较法直线插补MATLAB(四个象限合并)_第1张图片

 

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

你可能感兴趣的:(matlab,matlab)