计算几何模板

符号判断

inline int sgn(double x){
	if(x>eps) return 1;
	if(x<-eps)return -1;
	return 0;
}

变量的定义

点/向量:它们都可以用坐标来表示。于是可以定义在一起。给出几个基本运算。

struct Grid{
	double x,y;
	Grid(double X=0,double Y=0){x=X,y=Y;}
	friend inline bool operator==(const Grid &a,const Grid &b){return !sgn(a.x-b.x)&&!sgn(a.y-b.y);}
	inline double Angle(){return atan2(y,x);}
	inline double len(){return sqrt(x*x+y*y);}
	friend inline Grid operator +(const Grid &a,const Grid &b){return Grid(a.x+b.x,a.y+b.y);}
	friend inline Grid operator -(const Grid &a,const Grid &b){return Grid(a.x-b.x,a.y-b.y);}
	friend inline Grid operator *(const Grid &a,const double &b){return Grid(a.x*b,a.y*b);}
	friend inline Grid operator /(const Grid &a,const double &b){return Grid(a.x/b,a.y/b);}
	friend inline double dot(const Grid &a,const Grid &b){return a.x*b.x+a.y*b.y;}
	friend inline double cross(const Grid &a,const Grid &b){return a.x*b.y-a.y*b.x;}
};
typedef Grid Point,Vector;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值