來一波全套向量運算(C++)


//頭文件要求
#include <cmath>

struct P{long long x, y;}p[N];

//加法
P operator +(P x, P y){return (P){x.x + y.x, x.y + y.y};} 

//減法
P operator -(P x, P y){return (P){x.x - y.x, x.y - y.y};} 

// 乘法
P operator *(P x, P y){return (P){x.x * y.x - x.y * y.y, x.y * y.x + x.x * y.y};}

//叉積
long long cross(P x, P y){return x.y * y.x - x.x * y.y;} 

 //數量積 點積
long long dot(P x, P y){return x.x * y.x + x.y * y.y;}

//四舍五入除法
long long dv(long long a, long long b){//注意重名!!! 
	return b < 0 ? dv(-a, -b)
	 : (a < 0 ? -dv(-a, b)
	 : (a + b / 2) / b);}

//模長平方
long long len(P x){return x.x * x.x + x.y * x.y;} 

//模長
long long dis(P x){return sqrt(x.x * x.x + x.y * x.y);} 

//向量除法
P operator /(P x, P y){
	long long l = len(y);
    return (P){dv(dot(x, y), l), dv(cross(x, y), l)};
} 

//向量膜
P operator %(P x, P y){return x - ((x / y) * y);}

//向量GCD 
P gcd(P x, P y){return len(y) ? gcd(y, x % y) : x;}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM