#include <cstdint>
#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;
std::vector<std::vector<int>> bresenham(int x0,int y0,int x1,int y1)
{
std::vector<std::vector<int>> v;
std::vector<int> x_values;
std::vector<int> y_values;
int dx=x1-x0;
int dy=y1-y0;
int swap_flag=0;
if (dy>dx){
int c=x1;
x1=y1;
y1=c;
int d=x0;
x0=y0;
y0=d;
dx=x1-x0;
dy=y1-y0;
swap_flag=1;
}
int p=2*dy-dx;
int x=x0;
int y=y0;
x_values.push_back(x);
y_values.push_back(y);
int i=0;
do {
if (p<0) {
x+=1;
p+=2*dy;
}
else{
x+=1;
y+=1;
p+=2*(dy-dx);
}
/* cout<<x<<" "<<y<<std::endl; */
x_values.push_back(x);
y_values.push_back(y);
i+=1;
} while (i<dx);
if(swap_flag==1){
v.push_back(y_values);
v.push_back(x_values);
}
else{
v.push_back(x_values);
v.push_back(y_values);
}
return v;
}
int main()
{
std::vector<std::vector<int>> v=bresenham(0,0,5,3);
cout<<"number of rows are"<<v.size()<<endl;
cout<<"numbers of column are"<<v[1].size()<<endl;
for(int i=0;i<v.size();i++)
{
for(int j=0;j<v[i].size();j++)
{
std::cout<<v[i][j]<<" ";
}
std::cout<<std::endl;
}
}