叉积

叉积

图中两个向量p1,p2.两个向量ab的叉积写作a×b(有时也被写成ab,避免和字母x混淆)

向量p1,p2的叉积为

 我们把(0,0)点当做p0.

有了叉积的基础,我们在判断两条线段的关系p0p1,p1p2,就可以直接添一条有向线段p0p2,再检查p0p1,p1p2和p0p2的时钟旋转关系。为了做到这一点,我们计算出叉积\left ( p_{1}-p_{0} \right )\wedge \left ( p_{1}-p_{0} \right ) = \left ( x_{1}-x_{0} \right )\left ( y_{2}-y_{0} \right )-\left ( x_{2}-x_{0} \right )\left ( y_{1}-y_{0} \right )

给出向量的一些模板运算

struct point{
	double x,y;
	point(){};
	point(double x,double y) :x(x),y(y){};
//	point(double x=0,double y=0): x(x),y(y){}
	point operator - (const point &op2) const{
		return point(x-op2.x,y-op2.y);
	}
	double operator ^ (const point &op2)const{  //叉积 
		return x*op2.y - y*op2.x;
	}
}p[maxn];
inline int sign(const double &x){  //判断符号 
	if(x>epsi) return 1;
	if(x < -epsi) return -1;
	return 0;
}
inline double sqr(const double &x){
	return x*x;
}
inline double mul(const point &p0,const point &p1,const point &p2){ //求 p0p1与p0p2的叉积 
	return (p1-p0) ^ (p2-p0); 
}
inline double dis2(const point &p0,const point &p1){// |p0p1|的平方 
	return	sqr(p0.x-p1.x)+sqr(p0.y-p1.y);
}
inline double dis(const point &p0,const point &p1){// |p0p1|
	return sqrt(dis2(p0,p1));
}

叉积的应用:

叉积求点在直线的一侧

求多边形面积

判断两直线相交

//补

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值