叉积

叉积

图中两个向量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));
}

叉积的应用:

叉积求点在直线的一侧

求多边形面积

判断两直线相交

//补

### 向量的计算方法 向量(Cross Product)是一种仅在三维空间中定义的向量运算,其结果是一个新的向量,该向量与原始两个向量垂直,并且其方向由**右手法则**决定,大小等于由这两个向量所构成的平行四边形的面。[^1] 设两个三维向量分别为: $$ \vec{a} = \begin{bmatrix} a_x \\ a_y \\ a_z \end{bmatrix}, \quad \vec{b} = \begin{bmatrix} b_x \\ b_y \\ b_z \end{bmatrix} $$ 则它们的 $\vec{c} = \vec{a} \times \vec{b}$ 可以通过以下行列式形式计算: $$ \vec{a} \times \vec{b} = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \\ a_x & a_y & a_z \\ b_x & b_y & b_z \\ \end{vmatrix} = (a_y b_z - a_z b_y)\mathbf{i} - (a_x b_z - a_z b_x)\mathbf{j} + (a_x b_y - a_y b_x)\mathbf{k} $$ 也可以写成向量形式: $$ \vec{a} \times \vec{b} = \begin{bmatrix} a_y b_z - a_z b_y \\ a_z b_x - a_x b_z \\ a_x b_y - a_y b_x \end{bmatrix} $$ 在编程中,例如使用 Python 进行计算,可以使用 NumPy 库的 `cross` 函数: ```python import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) cross_product = np.cross(a, b) print(cross_product) ``` ### 三维向量公式 三维向量的公式可以进一步推广为: $$ \vec{a} \times \vec{b} = |\vec{a}||\vec{b}|\sin(\theta)\hat{n} $$ 其中: - $|\vec{a}|$ 和 $|\vec{b}|$ 是向量的模; - $\theta$ 是两个向量之间的夹角; - $\hat{n}$ 是垂直于 $\vec{a}$ 和 $\vec{b}$ 的单位向量,方向由右手法则确定。 的方向由右手法则确定,即:将右手食指指向第一个向量方向,中指指向第二个向量方向,拇指所指的方向即为的方向。[^3] ### 向量的应用 向量在多个领域中都有重要应用,主要包括: 1. **计算面与体** - 的大小等于两个向量围成的平行四边形的面。 - 若有三个向量 $\vec{a}, \vec{b}, \vec{c}$,则它们的混合 $\vec{a} \cdot (\vec{b} \times \vec{c})$ 表示由这三个向量围成的平行六面体的体。[^3] 2. **物理中的力矩与角动量** - 力矩 $\vec{\tau} = \vec{r} \times \vec{F}$,其中 $\vec{r}$ 是力臂,$\vec{F}$ 是作用力。 - 角动量 $\vec{L} = \vec{r} \times \vec{p}$,其中 $\vec{p}$ 是动量。 3. **计算机图形学中的法向量计算** - 在 3D 图形中,用于计算多边形的表面法向量,用于光照、阴影等渲染效果。 4. **判断向量的方向关系** - 通过的正负可以判断两个向量的相对方向(顺时针或逆时针),这在计算几何中非常有用。[^2] 5. **机器人学与工程力学** - 在机器人运动学中,用于描述旋转轴和角速度之间的关系。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值