📄 line_interpolation.c
字号:
//直线插补
signed int Fm1,Xe,Ye;
void y_zm(void);
void x_zm(void);
unsigned char Line_determing(int x2, int y2) ;
void xoy1();//第一象限
void xoy2();
void xoy3();
void xoy4();
void xoy5();
void xoy6();
void xoy7();
void xoy8();
void z_chabu( int x1, int y1,int x2, int y2);
//Y轴给1个脉冲 //直线插补
void y_zm(void)
{
int i=0;
if(ir_data[2]==STOP) {while(ir_data[2]!=C_STOP) ;}
Y_M=1;
i=kc;
while (i--);
Y_M=0;
displayY();
if( Y_F) Pref_y+=1;
else Pref_y-=1;
}
//X轴给1个脉冲
void x_zm(void)
{
int i=0;
if(ir_data[2]==STOP) {while(ir_data[2]!=C_STOP) ;}
X_M=1;
i=kc;
while (i--);
X_M=0;
displayX();
if( X_F) Pref_x+=1;
else Pref_x-=1;
}
//直线位置判断
unsigned char Line_determing(int x2, int y2)
{
unsigned char XOY;
if(x2>0&&y2>0)
XOY=1; //第一象限
if(x2<0&&y2>0)
XOY=2; //第二象限
if(x2<0&&y2<0)
XOY=3; //第三象限
if(x2>0&&y2<0)
XOY=4; //第四象限
if(x2>0&&y2==0) XOY=5;//正X轴
if(x2==0&&y2>0) XOY=6;//正Y轴
if(x2<0&&y2==0) XOY=7;//负X轴
if(x2==0&&y2<0) XOY=8;//负Y轴
return (XOY) ;
}
//第一象限
void xoy1()
{
X_F=1;
Y_F=1;
while(n)
{
if(Pref_x>23200||Pref_x<0||Pref_y>23500||Pref_y<0) break;
if(Fm1>=0) { Fm1=Fm1-Ye;x_zm();}
else { Fm1=Fm1+Xe;y_zm();}
n--;
}
displayXY();
}
//第二象限
void xoy2()
{
X_F=0;
Y_F=1;
while(n)
{
if(Pref_x>23200||Pref_x<0||Pref_y>23500||Pref_y<0) break;
if(Fm1>=0) { n=n-1;Fm1=Fm1-Ye;x_zm();}
else { n=n-1;Fm1=Fm1+Xe;y_zm();}
}
displayXY();
}
//第三象限
void xoy3()
{
X_F=0;
Y_F=0;
while(n)
{
if(Pref_x>23200||Pref_x<0||Pref_y>23500||Pref_y<0) break;
if(Fm1>=0) { n=n-1;Fm1=Fm1-Ye;x_zm();}
else { n=n-1;Fm1=Fm1+Xe;y_zm();}
}
displayXY();
}
//第四象限
void xoy4()
{
X_F=1;
Y_F=0;
while(n)
{
if(Pref_x>23200||Pref_x<0||Pref_y>23500||Pref_y<0) break;
if(Fm1>=0) { Fm1=Fm1-Ye;x_zm();}
else { Fm1=Fm1+Xe;y_zm();}
n--;
}
displayXY();
}
//正X轴
void xoy5()
{ X_F=1;
while(n)
{
if(Pref_x>23200||Pref_x<0||Pref_y>23500||Pref_y<0) break;
n=n-1;x_zm();}
displayXY();
}
//正Y轴
void xoy6()
{ Y_F=1;
while(n)
{
if(Pref_x>23200||Pref_x<0||Pref_y>23500||Pref_y<0) break;
n=n-1;y_zm();}
displayXY();
}
//负X轴
void xoy7()
{ X_F=0;
while(n)
{
if(Pref_x>23200||Pref_x<0||Pref_y>23500||Pref_y<0) break;
n=n-1;x_zm();}
displayXY();
}
//负Y轴
void xoy8()
{ Y_F=0;
while(n)
{
if(Pref_x>23200||Pref_x<0||Pref_y>23500||Pref_y<0) break;
n=n-1;y_zm();}
displayXY();
}
//直线插补
void z_chabu( int x1, int y1,int x2, int y2)
{ unsigned char XOY;
Fm1=0;
x1=x1*100;
x2=x2*100; /*放大100陪*/
y1=y1*100;
y2=y2*100;
Xe=x2-x1;
Ye=y2-y1;
Xe=fabs(Xe);
Ye=fabs(Ye);
n=Xe+Ye;
XOY= Line_determing(x2,y2);
switch(XOY)
{case 1:xoy1();break;
case 2:xoy2();break;
case 3:xoy3();break;
case 4:xoy4();break;
case 5:xoy5();break;
case 6:xoy6();break;
case 7:xoy7();break;
case 8:xoy8();break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -