排列组合公式,用向量叉乘的办法计算平行四边形面积

struct Point{//两个点相减是向量,二维向量叉乘是平行四边形面积
  int x,y;
   Point(int _x = 0, int _y = 0) :x(_x), y(_y) {}
   Point operator -(const Point &p)const {
	   return Point(x - p.x, y - p.y);
   }
   long long operator ^(const Point &p) const {
	   return (long long)x*p.y - (long long)y*p.x;
   }
}p[maxn];
面积 = abs((p[k] - p[i]) ^ (p[j] - p[i]));

在这里插入图片描述
其实只要把二维向量看做第三维数值为0的三维空间向量就行了, 根据三维向量行列式运算的结果,所得向量只有第三维非0,也就是说,V1(x1, y1) X V2(x2, y2) = x1y2 – y1x2,在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/huaiyingdetective/article/details/86644128