const double eps = 1e-8;
const double pi = acos(-1.0);
//判浮點數符號
int sgn( double x )
//point定義
struct point
point( double _x , double _y )
point operator -( const point&b )const
point operator +( const point&b )const
//叉積
//叉積》0,a在b的順時針方向
//叉積<0,a在b的逆時針方向
//叉積=0,a與b平行
double operator ^( const point&b )const
//點積
double operator *( const point&b )const
//繞原點旋轉角度b(弧度制)後x,y的變化
void transxy( double b )
};//line定義
struct line
line( point _s , point _e )
//求兩直線交點
//第乙個值為0表示直線重合,為1表示直線平行,為2表示直線相交
pairoperator &( const line&b )const
double t = ((s-b.s)^(b.s-b.e))/((s-e)^(b.s-b.e));
res.x += (e.x-s.x)*t;
res.y += (e.y-s.y)*t;
return make_pair( 2 , res );
}};//兩點間距離
double dist( point a , point b )
//判斷線段相交
bool inter( line l1 , line l2 )
//判斷直線l1和線段l2相交
//小心直線是單點的情況
bool seg_inter_line( line l1 , line l2 )
//點到直線距離,返回點到直線的最近點
point pointtoline( point p , line l )
//點到線段距離。返回點到線段的最近點
point nearestpointtolineseg( point p , line l )
else
else if ( onseg(side.e,ray) )
else if ( inter(ray,side) ) cnt++;
}if ( cnt%2==1 ) return 1;
else return -1;
}//判斷凸多邊形
//允許共線邊
//點可以是順時針給出也可以是逆時針給出
//點的編號0~n-1
bool isconvex( point poly , int n )
return true;
}
計算幾何基本模板
上傳一下計算幾何的基本模板,自己也可以看 include include include using namespace std struct point typedef point vector point point double x,double y 向量與向量的 點積 叉積 vector o...
計算幾何基本模板
待更新。include include includeusing namespace std const double pi acos 1 const double eps 1e 8 實數精度 點結構型別 struct point 線段結構型別 struct lineseg struct line ...
計算幾何模板
sgn返回x經過eps處理的符號,負數返回 1,正數返回1,x的絕對值如果足夠小,就返回0。const double eps 1e 8 int sgn double x double mysqrt double x pt是point的縮寫 int版 struct pt pt int x,int y ...