//此程序仅供参考
//直线插补初始化
void ClatheView::LG01_Ini(long xe, long ye,
long ze, int v)
{
if(xe!=0||ye!=0||ze!=0)
{
if(xe>0)
{
lgo_xy1[0]=(lgo_xy1[0]|0x08)&0xdf;
if((lgo_xy1[6]&0x01)==0x01)
lgo_xy1[6]=lgo_xy1[6]&0xfe;
}
else if(xe<0)
{
lgo_xy1[0]=lgo_xy1[0]|0x28;
if((lgo_xy1[6]&0x01)!=0x01)
lgo_xy1[6]=lgo_xy1[6]|0x01;
}
if(ye>0)
{
lgo_xy1[0]=(lgo_xy1[0]|0x10)&0xbf;
if((lgo_xy1[6]&0x02)==0x02)
lgo_xy1[6]=lgo_xy1[6]&0xfd;
}
else if(ye<0)
{
lgo_xy1[0]=lgo_xy1[0]|0x50;
if((lgo_xy1[6]&0x02)!=0x02)
lgo_xy1[6]=lgo_xy1[6]|0x02;
}
if(ze>0)
{
if((lgo_xy1[6]&0x04)==0x04)
lgo_xy1[6]=lgo_xy1[6]&0xfb;
}
else if(ze<0)
{
if((lgo_xy1[6]&0x04)!=0x04)
lgo_xy1[6]=lgo_xy1[6]|0x04;
}
xe=labs(xe);
ye=labs(ye);
ze=labs(ze);
lgo_xy2[0]=xe;
lgo_xy2[1]=ye;
lgo_xy2[2]=ze;
lgo_xy2[3]=xe;
lgo_xy2[4]=ye;
lgo_xy2[5]=ze;
if(xe>=ye)
{
if(xe>=ze)
lgo_xy2[6]=xe;
else
lgo_xy2[6]=ze;
}
else
{
if(ye>=ze)
lgo_xy2[6]=ye;
else
lgo_xy2[6]=ze;
}
lgo_xy2[7]=lgo_xy2[6];
lgo_xy2[6]=lgo_xy2[6]+1;
}
else
lgo_xy1[1]=0x04;
}
//直线DDA插补
void ClatheView::LG01_DDA()
{
lgo_xy1[6]=lgo_xy1[6]&0x03f;
lgo_xy2[0]=lgo_xy2[0]+lgo_xy2[3];
if(lgo_xy2[0]>=lgo_xy2[6])
{lgo_xy2[0]=lgo_xy2[0]-lgo_xy2[6];
lgo_xy1[6]=lgo_xy1[6]|0x40;
}
lgo_xy2[1]=lgo_xy2[1]+lgo_xy2[4];
if(lgo_xy2[1]>=lgo_xy2[6])
{lgo_xy2[1]=lgo_xy2[1]-lgo_xy2[6];
lgo_xy1[6]=lgo_xy1[6]|0x80;
}
lgo_xy2[2]=lgo_xy2[2]+lgo_xy2[5];
if(lgo_xy2[2]>=lgo_xy2[6])
{lgo_xy2[2]=lgo_xy2[2]-lgo_xy2[6];
lgo_xy1[6]=lgo_xy1[6]|0x100;
}
} |
|