#include <cmath>
#include <iostream>
using namespace std;
int main()
{
int Nxy,xs,ys,xe,ye,xi,yi,XieLvChaZhi;
//Nxy为插补总次数,xs与ys为起点坐标,xe与ye为终点坐标,xi与yi为插补过程点,XieLvChaZhi为斜率差值。
cout<<"请输入起点坐标:"<<endl;
cin>>xs>>ys;
cout<<"请输入终点坐标:"<<endl;
cin>>xe>>ye;
Nxy =abs((xe-xs))+abs((ye-ys));
xi=xs;
yi=ys;
//以上两行代码实现将过程点放在起点坐标上面。
for(int i=0;i<Nxy;i++)
{
XieLvChaZhi =(xe-xs)*(yi-ys)-(xi-xs)*(ye-ys);
//Y轴正负方向走向
if(xe-xs==0)
{
if (ye-ys>0)
{
yi++;
}
else
{
yi--;
}
cout<<xi<<","<<yi<<endl;
}
//X轴正负方向走向
if(ye-ys==0)
{
if (xe-xs>0)
{
xi++;
}
else
{
xi--;
}
cout<<xi<<","<<yi<<endl;
}
//第一象限走向
if ((xe-xs>0)&&(ye-ys>0))
{
if (XieLvChaZhi>=0)
{
xi++;
}
else
{
yi++;
}
cout<<xi<<","<<yi<<endl;
}
//第二象限走向
if ((xe-xs<0)&&(ye-ys>0))
{
if (XieLvChaZhi<=0)
{
xi--;
}
else
{
yi++;
}
cout<<xi<<","<<yi<<endl;
}
//第三象限走向
if ((xe-xs<0)&&(ye-ys<0))
{
if (XieLvChaZhi<=0)
{
yi--;
}
else
{
xi--;
}
cout<<xi<<","<<yi<<endl;
}
//第四象限走向
if ((xe-xs>0)&&(ye-ys<0))
{
if (XieLvChaZhi>=0)
{
yi--;
}
else
{
xi++;
}
cout<<xi<<","<<yi<<endl;
}
}
system("pause");
return 0;
}