基本原理就是分成2部分和一点,然后递归。
比如4点曲线的基本原理:
图1的蓝线=图3的绿线+曲线点【红绿交点】+图3的红线;
图3的绿线=>图1的蓝线;
图3的红线=>图1的蓝线;
struct xyf;
struct xy{
int x;
int y;
xy(){
}
xy(int m){
x=m;
y=m;
}
xy(int x,int y){
this->x=x;
this->y=y;
}
xy(xyf m);
xy operator *(xy&m){return xy(x *m.x,y *m.y);}
xy operator /(xy&m){return xy(x /m.x,y /m.y);}
xy operator %(xy&m){return xy(x %m.x,y %m.y);}
xy operator +(xy&m){return xy(x +m.x,y +m.y);}
xy operator -(xy&m){return xy(x -m.x,y -m.y);}
xy operator <<(xy&m){return xy(x<<m.x,y<<m.y);}
xy operator >>(xy&m){return xy(x>>m.x,y>>m.y);}
xy operator &(xy&m){return xy(x &m.x,y &m.y);}
xy operator |(xy&m){return xy(x |m.x,y |m.y);}
xy operator ^(xy&m){return xy(x ^m.x,y ^m.y);}
xy operator *=(xy&m){x *=m.x;y *=m.y;return *this;}
xy operator /=(xy&m){x /=m.x;y /=m.y;return *this;}
xy operator %=(xy&m){x %=m.x;y %=m.y;return *this;}
xy operator +=(xy&m){x +=m.x;y +=m.y;return *this;}
xy operator -=(xy&m