自己动手证明向量点乘和叉乘的几何意义

article/2025/9/18 10:41:33

目标

对于游戏行业程序员来说,向量“点乘”和“叉乘”是非常熟悉的运算。从代码上看他们运算过程并不复杂:(以下代码选自UE4的“Vector.h”)

点乘就是各分量逐项相乘,最终得到了一个标量

FORCEINLINE float FVector::DotProduct(const FVector& A, const FVector& B)
{return X*V.X + Y*V.Y + Z*V.Z;
}

叉乘最终得到一个新的向量,虽然其运算现在看起来略显“奇怪”(不过,在随后的证明中可以看出其重要的几何意义):

FORCEINLINE FVector FVector::CrossProduct(const FVector& A, const FVector& B)
{return FVector(Y * V.Z - Z * V.Y,Z * V.X - X * V.Z,X * V.Y - Y * V.X);
}

即:
a ⃗ ⋅ b ⃗ = x a x b + y a y b + z a z b \vec{a}\cdot\vec{b} = x_ax_b+y_ay_b+z_az_b a b =xaxb+yayb+zazb

a ⃗ × b ⃗ = ( y a z b − z a y b , z a x b − x a z b , x a y b − y a x b ) \vec{a}\times\vec{b} = (y_az_b-z_ay_b,z_ax_b-x_az_b,x_ay_b-y_ax_b) a ×b =(yazbzayb,zaxbxazb,xaybyaxb)

他们各自都有重要的几何意义,经常会出现在有关空间计算的逻辑中,例如:

  • 标准化后向量点乘得到的值为夹角的余弦。这样,只要计算点乘,得到-1~ 0 ~1,便可知道两个向量之间方向的关系是相反 ~ 垂直 ~ 相同
  • 向量叉乘后得到的新向量一定和原先两个向量垂直。
  • 向量叉乘后得到的向量的模,其值为两个向量构成的三角形的面积的二倍。

向量点乘和叉乘的这些特性经常被使用,但是对于其中的数学原理我是模糊不清的,因此我想自己动手证明一下。

而为了让这些证明得更容易,我还需要在此之前证明其基于的一些定理。

1. 证明:勾股定理

定理:
对于一个直角三角形ABC,其中直角为∠BAC,有:
B C 2 = A B 2 + A C 2 BC^2=AB^2+AC^2 BC2=AB2+AC2


其证明网上有很多种,下面的方法据说来自于欧几里得的《几何原本》。
在这里插入图片描述
(图片来源勾股定理_百度百科)

由于 三角形FBC正方形GFBA 同底等高,所以有:
S F B C × 2 = S G F B A S_{FBC}\times2=S_{GFBA} SFBC×2=SGFBA

由于 三角形FBC三角形ABD 为全等三角形,所以有:
S F B C = S A B D S_{FBC}=S_{ABD} SFBC=SABD

由于 三角形ABD矩形BDLK 同底等高,所以有:
S A B D × 2 = S B D L K S_{ABD}\times2=S_{BDLK} SABD×2=SBDLK

因此:
S G F B A = S F B C × 2 = S A B D × 2 = S B D L K S_{GFBA}=S_{FBC}\times2=S_{ABD}\times2=S_{BDLK} SGFBA=SFBC×2=SABD×2=SBDLK

同理:
S A C I H = S K L E C S_{ACIH}=S_{KLEC} SACIH=SKLEC

(即图中粉色正方形的面积等于粉色矩形的面积,蓝色正方形的面积等于蓝色矩形的面积)

因此:
B C 2 = S B D E C = S B D L K + S K L E C = S G F B A + S A C I H = A B 2 + A C 2 \begin{aligned} BC^2 & =S_{BDEC}\\ & =S_{BDLK}+S_{KLEC}\\ & =S_{GFBA}+S_{ACIH}\\ & = AB^2+AC^2\\ \end{aligned} BC2=SBDEC=SBDLK+SKLEC=SGFBA+SACIH=AB2+AC2

2. 证明:余弦定理

定理:
对于任意一个三角形ABC,有:
A B 2 = B C 2 + A C 2 − 2 B C ⋅ A C ⋅ c o s C AB^2=BC^2+AC^2-2BC \cdot AC \cdot cosC AB2=BC2+AC22BCACcosC


证明网上也有很多种,下面的方法据说也来自于欧几里得的《几何原本》。
在这里插入图片描述

在直角三角形ADC中,有:
A D = A C ⋅ s i n C AD = AC \cdot sinC AD=ACsinC

C D = A C ⋅ c o s C CD = AC \cdot cosC CD=ACcosC

在CB边上,有:
D B = B C − C D = B C − A C ⋅ c o s C DB= BC-CD=BC- AC \cdot cosC DB=BCCD=BCACcosC

在直角三角形ADB中,由勾股定理可得:
A B 2 = A D 2 + D B 2 = ( A C ⋅ s i n C ) 2 + ( B C − A C ⋅ c o s C ) 2 = A C 2 ⋅ s i n C 2 + B C 2 + A C 2 ⋅ c o s C 2 − 2 B C ⋅ A C ⋅ c o s C = B C 2 + A C 2 ⋅ s i n C 2 + A C 2 ⋅ c o s C 2 − 2 B C ⋅ A C ⋅ c o s C = B C 2 + A C 2 ( s i n C 2 + c o s C 2 ) − 2 B C ⋅ A C ⋅ c o s C = B C 2 + A C 2 − 2 B C ⋅ A C ⋅ c o s C \begin{aligned} AB^2 & =AD^2+DB^2\\ & =(AC \cdot sinC)^2+(BC- AC \cdot cosC)^2\\ & =AC^2\cdot sinC^2+BC^2+AC^2\cdot cosC^2-2BC \cdot AC \cdot cosC\\ & =BC^2+AC^2\cdot sinC^2+AC^2\cdot cosC^2-2BC \cdot AC \cdot cosC\\ & =BC^2+AC^2(sinC^2+cosC^2)-2BC \cdot AC \cdot cosC\\ & =BC^2+AC^2-2BC \cdot AC \cdot cosC\\ \end{aligned} AB2=AD2+DB2=(ACsinC)2+(BCACcosC)2=AC2sinC2+BC2+AC2cosC22BCACcosC=BC2+AC2sinC2+AC2cosC22BCACcosC=BC2+AC2(sinC2+cosC2)2BCACcosC=BC2+AC22BCACcosC

3. 证明:向量点乘的几何意义——结果为模相乘再乘夹角余弦

向量点乘的定义如下:
a ⃗ ⋅ b ⃗ = x a x b + y a y b + z a z b \vec{a}\cdot\vec{b} = x_ax_b+y_ay_b+z_az_b a b =xaxb+yayb+zazb

现在想证明的是:(其中θ为两向量夹角)
a ⃗ ⋅ b ⃗ = ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ \vec{a}\cdot\vec{b} =\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta a b =a b cosθ


在证明前,先看一个算不上是“定理”的结论:
对于一个2维的向量(x,y),由于坐标系是垂直的,所以由勾股定理很容易能推导出
2 维 向 量 长 度 2 = x 2 + y 2 2维向量长度^2=x^2+y^2 22=x2+y2

对于一个3维的向量(x,y,z),也可以很容易能推导出:
3 维 向 量 长 度 2 = x 2 + y 2 + z 2 3维向量长度^2=x^2+y^2+z^2 32=x2+y2+z2


下面正式开始证明:
在这里插入图片描述

如果将向量a和向量b的起点放在一起,那么这两个向量终点之间的向量即为 a-b

而根据余弦定理,有:
∥ a ⃗ − b ⃗ ∥ 2 = ∥ a ⃗ ∥ 2 + ∥ b ⃗ ∥ 2 − 2 ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ \left \| \vec{a} -\vec{b} \right \|^2=\left \| \vec{a} \right \|^2 +\left \| \vec{b} \right \|^2 -2\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta a b 2=a 2+b 22a b cosθ
写成分量的形式,就是:
( ( x a , y a , z a ) − ( x b , y b , z b ) ) 2 = ( x a , y a , z a ) 2 + ( x b , y b , z b ) 2 − 2 ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ ((x_a,y_a,z_a)-(x_b,y_b,z_b))^2=(x_a,y_a,z_a)^2+(x_b,y_b,z_b)^2-2\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta ((xa,ya,za)(xb,yb,zb))2=(xa,ya,za)2+(xb,yb,zb)22a b cosθ

向量相减即各分量相减,即:
( x a − x b , y a − y b , z a − z b ) 2 = ( x a , y a , z a ) 2 + ( x b , y b , z b ) 2 − 2 ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ (x_a-x_b,y_a-y_b,z_a-z_b)^2=(x_a,y_a,z_a)^2+(x_b,y_b,z_b)^2-2\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta (xaxb,yayb,zazb)2=(xa,ya,za)2+(xb,yb,zb)22a b cosθ

将平方的运算展开:
x a 2 + x b 2 − 2 x a x b + y a 2 + y b 2 − 2 y a y b + z a 2 + z b 2 − 2 z a z b = x a 2 + x b 2 + y a 2 + y b 2 + z a 2 + z b 2 − 2 ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ x_a^2+x_b^2-2x_ax_b+y_a^2+y_b^2-2y_ay_b+z_a^2+z_b^2-2z_az_b=x_a^2+x_b^2+y_a^2+y_b^2+z_a^2+z_b^2-2\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta xa2+xb22xaxb+ya2+yb22yayb+za2+zb22zazb=xa2+xb2+ya2+yb2+za2+zb22a b cosθ

去掉等式两边重复项可得:
− 2 x a x b − 2 y a y b − 2 z a z b = − 2 ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ -2x_ax_b-2y_ay_b-2z_az_b=-2\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta 2xaxb2yayb2zazb=2a b cosθ

约去-2得:
x a x b + y a y b + z a z b = ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ x_ax_b+y_ay_b+z_az_b=\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta xaxb+yayb+zazb=a b cosθ

结合向量点乘的定义,则最后可知:
a ⃗ ⋅ b ⃗ = x a x b + y a y b + z a z b = ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ \begin{aligned} \vec{a}\cdot\vec{b} & =x_ax_b+y_ay_b+z_az_b \\ & =\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta \\ \end{aligned} a b =xaxb+yayb+zazb=a b cosθ

4. 证明:向量叉乘的几何意义——结果与原先两个向量都垂直

向量叉乘的定义如下:
a ⃗ × b ⃗ = ( y a z b − z a y b , z a x b − x a z b , x a y b − y a x b ) \vec{a}\times\vec{b} = (y_az_b-z_ay_b,z_ax_b-x_az_b,x_ay_b-y_ax_b) a ×b =(yazbzayb,zaxbxazb,xaybyaxb)

由前面证明的向量点乘的几何意义可知,
如果能证明:

( a ⃗ × b ⃗ ) ⋅ a ⃗ = 0 (\vec{a}\times\vec{b} )\cdot \vec{a}=0 (a ×b )a =0

( a ⃗ × b ⃗ ) ⋅ b ⃗ = 0 (\vec{a}\times\vec{b} )\cdot \vec{b}=0 (a ×b )b =0

则意味着向量叉乘的结果向量,和原先两个向量的夹角的余弦值都为0,即夹角为90°,即与原先两个向量都垂直


而这个证明可以直接从算式中得出:
( a ⃗ × b ⃗ ) ⋅ a ⃗ = ( y a z b − z a y b , z a x b − x a z b , x a y b − y a x b ) ⋅ ( x a , y a , z a ) = y a z b x a − z a y b x a + z a x b y a − x a z b y a + x a y b z a − y a x b z a = ( y a z b x a − x a z b y a ) + ( x a y b z a − z a y b x a ) + ( z a x b y a − y a x b z a ) = 0 + 0 + 0 = 0 \begin{aligned} (\vec{a}\times\vec{b} )\cdot \vec{a} & = (y_az_b-z_ay_b,z_ax_b-x_az_b,x_ay_b-y_ax_b) \cdot (x_a,y_a,z_a) \\ & =y_az_bx_a-z_ay_bx_a+z_ax_by_a-x_az_by_a+x_ay_bz_a-y_ax_bz_a\\ & =(y_az_bx_a-x_az_by_a)+(x_ay_bz_a-z_ay_bx_a)+(z_ax_by_a-y_ax_bz_a)\\ & =0+0+0\\ & =0\\ \end{aligned} (a ×b )a =(yazbzayb,zaxbxazb,xaybyaxb)(xa,ya,za)=yazbxazaybxa+zaxbyaxazbya+xaybzayaxbza=(yazbxaxazbya)+(xaybzazaybxa)+(zaxbyayaxbza)=0+0+0=0

( a ⃗ × b ⃗ ) ⋅ b ⃗ = ( y a z b − z a y b , z a x b − x a z b , x a y b − y a x b ) ⋅ ( x b , y b , z b ) = y a z b x b − z a y b x b + z a x b y b − x a z b y b + x a y b z b − y a x b z b = ( y a z b x b − y a x b z b ) + ( z a x b y b − z a y b x b ) + ( x a y b z b − x a z b y b ) = 0 + 0 + 0 = 0 \begin{aligned} (\vec{a}\times\vec{b} )\cdot \vec{b} & = (y_az_b-z_ay_b,z_ax_b-x_az_b,x_ay_b-y_ax_b) \cdot (x_b,y_b,z_b) \\ & =y_az_bx_b-z_ay_bx_b+z_ax_by_b-x_az_by_b+x_ay_bz_b-y_ax_bz_b\\ & =(y_az_bx_b-y_ax_bz_b)+(z_ax_by_b-z_ay_bx_b)+(x_ay_bz_b-x_az_by_b)\\ & =0+0+0\\ & =0\\ \end{aligned} (a ×b )b =(yazbzayb,zaxbxazb,xaybyaxb)(xb,yb,zb)=yazbxbzaybxb+zaxbybxazbyb+xaybzbyaxbzb=(yazbxbyaxbzb)+(zaxbybzaybxb)+(xaybzbxazbyb)=0+0+0=0

5. 证明:向量叉乘的几何意义——结果的模为原先两向量的模相乘再乘夹角正弦

向量叉乘的定义如下:
a ⃗ × b ⃗ = ( y a z b − z a y b , z a x b − x a z b , x a y b − y a x b ) \vec{a}\times\vec{b} = (y_az_b-z_ay_b,z_ax_b-x_az_b,x_ay_b-y_ax_b) a ×b =(yazbzayb,zaxbxazb,xaybyaxb)

现在想证明的是:(其中θ为两向量夹角)
∥ a ⃗ × b ⃗ ∥ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ s i n θ \left \|\vec{a}\times\vec{b}\right \| =\left \| \vec{a} \right \|\left \| \vec{b} \right \|sin\theta a ×b =a b sinθ


(方法来自于《3D游戏与计算机图形学中的数学方法》)

取向量叉乘结果的平方,逐步展开:
∥ a ⃗ × b ⃗ ∥ 2 = ( y a z b − z a y b , z a x b − x a z b , x a y b − y a x b ) 2 = ( y a z b − z a y b ) 2 + ( z a x b − x a z b ) 2 + ( x a y b − y a x b ) 2 = ( y a 2 z b 2 + z a 2 y b 2 − 2 y a z b z a y b ) + ( z a 2 x b 2 + x a 2 z b 2 − 2 z a x b x a z b ) + ( x a 2 y b 2 + y a 2 x b 2 − 2 x a y b y a x b ) = ( y a 2 z b 2 + z a 2 y b 2 + z a 2 x b 2 + x a 2 z b 2 + x a 2 y b 2 + y a 2 x b 2 ) + ( − 2 y a z b z a y b − 2 z a x b x a z b − 2 x a y b y a x b ) \begin{aligned} \left \|\vec{a}\times\vec{b}\right \| ^2 & = (y_az_b-z_ay_b,z_ax_b-x_az_b,x_ay_b-y_ax_b)^2 \\ & = (y_az_b-z_ay_b)^2+(z_ax_b-x_az_b)^2+(x_ay_b-y_ax_b)^2 \\ & = (y_a^2z_b^2+z_a^2y_b^2-2y_az_bz_ay_b)+(z_a^2x_b^2+x_a^2z_b^2-2z_ax_bx_az_b)+(x_a^2y_b^2+y_a^2x_b^2-2x_ay_by_ax_b) \\ & = (y_a^2z_b^2+z_a^2y_b^2+z_a^2x_b^2+x_a^2z_b^2+x_a^2y_b^2+y_a^2x_b^2)+(-2y_az_bz_ay_b-2z_ax_bx_az_b-2x_ay_by_ax_b)\\ \end{aligned} a ×b 2=(yazbzayb,zaxbxazb,xaybyaxb)2=(yazbzayb)2+(zaxbxazb)2+(xaybyaxb)2=(ya2zb2+za2yb22yazbzayb)+(za2xb2+xa2zb22zaxbxazb)+(xa2yb2+ya2xb22xaybyaxb)=(ya2zb2+za2yb2+za2xb2+xa2zb2+xa2yb2+ya2xb2)+(2yazbzayb2zaxbxazb2xaybyaxb)

下面便出现了我觉得这种证明方法比较“魔法”的一个操作,对于等号右侧:
左部分先加上了 ( x a 2 x b 2 + y a 2 y b 2 + z a 2 z b 2 ) (x_a^2x_b^2+y_a^2y_b^2+z_a^2z_b^2) (xa2xb2+ya2yb2+za2zb2),右部分再减去它。一番“折腾”之后,虽然结果未受影响,但是却让左部分凑出了原先两向量的模的形式,右部分凑出了向量点乘的形式,具体来看:
∥ a ⃗ × b ⃗ ∥ 2 = ( y a 2 z b 2 + z a 2 y b 2 + z a 2 x b 2 + x a 2 z b 2 + x a 2 y b 2 + y a 2 x b 2 ) + ( x a 2 x b 2 + y a 2 y b 2 + z a 2 z b 2 ) + ( − 2 y a z b z a y b − 2 z a x b x a z b − 2 x a y b y a x b ) − ( x a 2 x b 2 + y a 2 y b 2 + z a 2 z b 2 ) = ( y a 2 z b 2 + z a 2 y b 2 + z a 2 x b 2 + x a 2 z b 2 + x a 2 y b 2 + y a 2 x b 2 + x a 2 x b 2 + y a 2 y b 2 + z a 2 z b 2 ) − ( x a 2 x b 2 + y a 2 y b 2 + z a 2 z b 2 + 2 y a z b z a y b + 2 z a x b x a z b + 2 x a y b y a x b ) = ( x a 2 + y a 2 + z a 2 ) ( x b 2 + y b 2 + z b 2 ) − ( x a x b + y a y b + z a z b ) 2 = ∥ a ⃗ ∥ 2 ∥ b ⃗ ∥ 2 − ( a ⃗ ⋅ b ⃗ ) 2 \begin{aligned} \left \|\vec{a}\times\vec{b}\right \| ^2 & = (y_a^2z_b^2+z_a^2y_b^2+z_a^2x_b^2+x_a^2z_b^2+x_a^2y_b^2+y_a^2x_b^2)+(x_a^2x_b^2+y_a^2y_b^2+z_a^2z_b^2)+(-2y_az_bz_ay_b-2z_ax_bx_az_b-2x_ay_by_ax_b)-(x_a^2x_b^2+y_a^2y_b^2+z_a^2z_b^2)\\ & = (y_a^2z_b^2+z_a^2y_b^2+z_a^2x_b^2+x_a^2z_b^2+x_a^2y_b^2+y_a^2x_b^2+x_a^2x_b^2+y_a^2y_b^2+z_a^2z_b^2)-(x_a^2x_b^2+y_a^2y_b^2+z_a^2z_b^2+2y_az_bz_ay_b+2z_ax_bx_az_b+2x_ay_by_ax_b)\\ & = (x_a^2+y_a^2+z_a^2)(x_b^2+y_b^2+z_b^2)-(x_ax_b+y_ay_b+z_az_b)^2\\ & =\left \| \vec{a} \right \|^2\left \| \vec{b} \right \|^2-(\vec{a}\cdot\vec{b})^2\\ \end{aligned} a ×b 2=(ya2zb2+za2yb2+za2xb2+xa2zb2+xa2yb2+ya2xb2)+(xa2xb2+ya2yb2+za2zb2)+(2yazbzayb2zaxbxazb2xaybyaxb)(xa2xb2+ya2yb2+za2zb2)=(ya2zb2+za2yb2+za2xb2+xa2zb2+xa2yb2+ya2xb2+xa2xb2+ya2yb2+za2zb2)(xa2xb2+ya2yb2+za2zb2+2yazbzayb+2zaxbxazb+2xaybyaxb)=(xa2+ya2+za2)(xb2+yb2+zb2)(xaxb+yayb+zazb)2=a 2b 2(a b )2

而根据前面证明的向量点乘的几何意义可知:
a ⃗ ⋅ b ⃗ = ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ \vec{a}\cdot\vec{b} =\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta a b =a b cosθ

所以:
∥ a ⃗ × b ⃗ ∥ 2 = ∥ a ⃗ ∥ 2 ∥ b ⃗ ∥ 2 − ∥ a ⃗ ∥ 2 ∥ b ⃗ ∥ 2 ⋅ ( c o s θ ) 2 = ∥ a ⃗ ∥ 2 ∥ b ⃗ ∥ 2 ⋅ ( 1 − ( c o s θ ) 2 ) \begin{aligned} \left \|\vec{a}\times\vec{b}\right \| ^2 & = \left \| \vec{a} \right \|^2\left \| \vec{b} \right \|^2-\left \| \vec{a} \right \|^2\left \| \vec{b} \right \|^2\cdot (cos\theta)^2\\ & = \left \| \vec{a} \right \|^2\left \| \vec{b} \right \|^2\cdot (1- (cos\theta)^2) \end{aligned} a ×b 2=a 2b 2a 2b 2(cosθ)2=a 2b 2(1(cosθ)2)

又因为【 ( c o s θ ) 2 + ( s i n θ ) 2 = 1 (cos\theta)^2+(sin\theta)^2=1 (cosθ)2+(sinθ)2=1 】一定成立
所以:
∥ a ⃗ × b ⃗ ∥ 2 = ∥ a ⃗ ∥ 2 ∥ b ⃗ ∥ 2 ⋅ ( s i n θ ) 2 \left \|\vec{a}\times\vec{b}\right \| ^2= \left \| \vec{a} \right \|^2\left \| \vec{b} \right \|^2\cdot (sin\theta)^2 a ×b 2=a 2b 2(sinθ)2

开方得:
∥ a ⃗ × b ⃗ ∥ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ ⋅ s i n θ \left \|\vec{a}\times\vec{b}\right \|= \left \| \vec{a} \right \|\left \| \vec{b} \right \|\cdot sin\theta a ×b =a b sinθ

6. 证明:向量叉乘的几何意义——结果的模为原先两向量构成三角形的面积二倍

在前者证明之后,此证明变得很容易,因为:

∥ b ⃗ ∥ ⋅ s i n θ \left \| \vec{b} \right \|\cdot sin\theta b sinθ 的长度就是以a为底边的三角形的高度:

在这里插入图片描述
所以:
∥ a ⃗ × b ⃗ ∥ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ ⋅ s i n θ = ( ∥ a ⃗ ∥ ) × ( ∥ b ⃗ ∥ ⋅ s i n θ ) = 底 × 高 = 2 × ( 底 × 高 2 ) = 2 × S 三 角 形 \begin{aligned} \left \|\vec{a}\times\vec{b}\right \| & = \left \| \vec{a} \right \|\left \| \vec{b} \right \|\cdot sin\theta\\ & = (\left \| \vec{a} \right \|)\times (\left \| \vec{b} \right \|\cdot sin\theta)\\ & = 底 \times 高\\ & = 2\times (\frac{底 \times 高}{2})\\ & = 2\times S_{三角形} \end{aligned} a ×b =a b sinθ=(a )×(b sinθ)=×=2×(2×)=2×S

总结

向量点乘

定义

a ⃗ ⋅ b ⃗ = x a x b + y a y b + z a z b \vec{a}\cdot\vec{b} = x_ax_b+y_ay_b+z_az_b a b =xaxb+yayb+zazb

几何意义与作用举例

a ⃗ ⋅ b ⃗ = ∥ a ⃗ ∥ ⋅ ∥ b ⃗ ∥ c o s θ \vec{a}\cdot\vec{b} =\left \| \vec{a} \right \|\cdot\left \| \vec{b} \right \|cos\theta a b =a b cosθ

  • 可以算出向量的夹角
  • 可以直接根据此值判断两向量方向的关系:-1~ 0 ~1对应于相反 ~ 垂直 ~ 相同

向量叉乘

定义

a ⃗ × b ⃗ = ( y a z b − z a y b , z a x b − x a z b , x a y b − y a x b ) \vec{a}\times\vec{b} = (y_az_b-z_ay_b,z_ax_b-x_az_b,x_ay_b-y_ax_b) a ×b =(yazbzayb,zaxbxazb,xaybyaxb)

几何意义与作用举例1

结果的向量与原先两个向量都垂直

  • 可以用来快速算出两个向量确定的一个平面的法向量方向。
几何意义与作用举例2

∥ a ⃗ × b ⃗ ∥ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ s i n θ \left \|\vec{a}\times\vec{b}\right \| =\left \| \vec{a} \right \|\left \| \vec{b} \right \|sin\theta a ×b =a b sinθ

  • 可以用来在已知顶点位置情况下,快速算出空间内一个三角形的面积。

http://chatgpt.dhexx.cn/article/TVcIBQ2m.shtml

相关文章

向量点乘、叉乘几何意义、python实现、应用

文章目录 数学表达式几何意义python应用求三角形面积判断点O与直线的关系判断点O与凸多边形关系判断凸多边形 数学表达式 点乘: a ⋅ b a 1 b 1 a 2 b 2 . . . a n b n a \cdot b a_1b_1a_2b_2...a_nb_n a⋅ba1​b1​a2​b2​...an​bn​ a ⋅ b ∣ a ∣ ∣…

[基础]-向量点乘和叉乘

向量的点乘(内积、数量积)和叉乘(外积、向量积) 文章目录 向量的点乘(内积、数量积)和叉乘(外积、向量积)[TOC]0.绪论1.向量点乘(内积)1.代数角度看2.从几何方面看3.常用公式: 2.向量叉乘(外积)1.代数角度看:2.几何角度看&#xf…

向量点乘相关公式推导及 几何解释

1.向量点乘公式推导和几何解释 01.向量点乘(dot product)是其各个分量乘积的和,公式: 用连加号写: 向量a(a1*e1, a2*e2,a3*e3........an*en)其中e1,e2,e3.......en为正交规范基(俩俩正交,每个…

向量点乘相关公式推导

1.向量点乘公式推导和几何解释 一般来说,点乘结果描述了两个向量的“相似”程度,点乘结果越大,两向量越相近。 01.向量点乘(dot product)是其各个分量乘积的和,公式: 用连加号写: 02.几何解释:…

向量点乘和叉乘的应用

一、向量的点乘 1、点乘的计算公式 其中 表示的是向量a的模即长度,为向量a与向量b形成的夹角 2、点乘的矩阵表示 3、应用 (1) 计算两个向量之间的夹角,如下: ,得出 为45度 在cocosCreator中, 情况1&am…

向量点乘和叉乘

title: 向量点乘和叉乘 categories: Math tags: MathKnowledge 向量点乘和叉乘 假设存在向量a和向量b:$ a[a_{1},a_{2},a_{3}],b[b_{1},b_{2},b_{3}] $ 点乘 向量a和向量b的点乘公式如下: $ a\bullet ba_{1}b_{1}a_{2}b_{2}a_{3}b_{3} $ 要求是向量a和向量的b的维度要…

向量点乘的图形学意义

向量的点乘是入门图形学的重要基础,本身并不复杂,但因为总与叉乘(图形学前期用不着)放在一起讲,搞得新手都很混乱,本文单独讲解一些点乘的图形学意义,新手先忘掉叉乘吧。 1.向量 向量即空间中的一个点到另一个点。 二维…

向量的点乘和叉乘

点乘,也叫数量积。结果是一个向量在另一个向量方向上投影的长度,是一个标量。 叉乘,也叫向量积。结果是一个和已有两个向量都垂直的向量(法向量)。 点乘在数学中一般用来判断两个向量是否垂直。也可以用来计算一个向…

Jmeter进行上传图片接口测试

当使用jmeter进行接口测试时,有可能需要做上传图片的接口测试。那么怎样进行上传图片的接口测试呢? 1、第一步当然是熟悉接口测试文档,比如请求方式、允许使用的图片格式和大小等 2、传参的方式选择files Upload 。 3、文件名称选择你图片保存…

使用postman测试图片上传

越来越觉的postman 是个很好使用的测试工具分享一下图片的测试 首先不要在头部headers中设置任何东西 然后选择body------->form-data 在key 中选中类型为file的输入接受文件的名字 在value上传你要上传的文件就ok了

YOLO测试图片显示准确率值

在YOLO官网下载darknet测试图片,结果图片上只会显示类别,不会显示准确率值,为了能显示框架准确率值如下图的形式修改配置文件如下: 首先打开darknet/src配置文件中找到image.c文件然后在image.c文件中找到draw_detections函数&…

postman测试上传文件(上传图片)

postman测试上传文件(上传图片)

测试工程师,必备图片测试工具 image-test-tools

image-test-tools 测试工程师,必备图片测试工具 recommend: China-Gitee,Other-Github 一、优点 简单易上手开源免费详细使用文档提高测试效率 二、功能 批量重命名图片批量下载图片修改图片大小生成不同格式图片图片打水印 四、环境 1.nodejs …

web自动化测试图片上传的两种方法

web自动化测试图片上传的两种方法&#xff1a; 通过input标签的&#xff0c;如&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <title>filetest!</title> <metacharset"utf-8"> </head> <body> …

使用appfox工具测试登录有图片验证码接口的问题

环境简介 服务器环境&#xff08;运行在虚拟机之上&#xff09;&#xff1a; 环境环境名称操作系统Win10 1905 专业版数据库sqlserver 2008R2 本机环境&#xff1a; 环境环境名称操作系统win10 1905 专业版产品某GRP高校财政管理软件中间件软件集成tomcat运行环境软件集成J…

性能服务器图片介绍大图,服务端图片图片上传接口性能压测总结

服务端图片上传接口性能压测总结 一。性能测试时需要关注点 用户操作的相应时间 服务器资源使用情况是否合理 应用服务器和数据库资源使用是否合理 系统能否实现扩展 系统最多支持多少用户访问、系统最大业务处理量是多少 系统性能可能存在的瓶颈在哪里 更换那些设备可以提高性…

生成9mb、10mb、20mb、30mb的星云图片,常用于图片测试

前言 在开发中经常会遇到图片上传问题 测试5mb、10mb、20mb等的图片上传时间 测试对10mb以上的图片限制上传 但是这么大的图片也不好找或者是我们想要一个50mb左右的图片&#xff0c;怎么可以快速简单的做出来&#xff1f;&#xff1f; 那你就来对地方了&#xff01;&…

postman测试上传图片接口步骤教程

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件&#xff0c;前端也要学会使用&#xff0c;只有这样&#xff0c;当接口调试不通的时候&#xff0c;用测试工具&#xff0c;才能够更有底气的甩一张截图给你家的后端&#xff0c;瞧&#xff0c;这是你写的bug。 下…