1. 程式人生 > >{模板}向量操作

{模板}向量操作

typedef double LD;
struct PI
{
    LD x,y;
    PI(LD X = 0, LD Y = 0){x=X, y=Y;}
};
PI operator+(PI a,PI b){return PI(a.x + b.x, a.y + b.y);}//加法 
PI operator-(PI a,PI b){return PI(a.x - b.x, a.y - b.y);}//減法 
PI operator*(PI a,LD b){return PI(a.x * b, a.y * b);}//數乘 
PI operator*(PI a,PI b){return PI(a.x * b.x
- a.y * b.y, a.x * b.y + a.y * b.x);}//複數意義下乘法 LD operator^(PI a,PI b){return a.x * b.y - a.y * b.x;}//叉積 LD dot(PI a,PI b){return a.x * b.x + a.y * b.y;}//點積 LD lens(PI a){return sqrt(dot(a,a));}//模長