快捷搜索:  汽车  科技

向量的叉乘运算(向量的叉积)

向量的叉乘运算(向量的叉积)附上这段演示动画的julia代码:下面的动画演示了向量b在xy平面上旋转360°,红色的向量为向量a、b的叉积在3D空间的变化。另外,向量a、b的叉积也是一个向量,这个向量的方向垂直于向量a、b组成的平面的,就是图形学中常提到的法向量。为什么叉积的坐标定义公式会和对应的几何意义是等价的哪,这里我们简单展示推导的思路,我们尝试计算下面的公式的结果。通过叉积的坐标形式代入并一步步展开、合并可以得出叉积的几何意义。

叉积的定义

3D空间中两个向量的叉积定义为:

向量的叉乘运算(向量的叉积)(1)

两个向量的叉积还是一个向量,而向量的点积是标量(只有数值,无方向)

叉积的几何意义

叉积的主要用途之一是可以计算三角形的面积,叉积满足下面的公式:

向量的叉乘运算(向量的叉积)(2)

θ为向量a、b之间的夹角,上面的公式表明向量a、b叉积的模长等于向量a、b组成的平行四边形的面积,也就是a、b组成的三角形面积的2倍。

向量的叉乘运算(向量的叉积)(3)

另外,向量a、b的叉积也是一个向量,这个向量的方向垂直于向量a、b组成的平面的,就是图形学中常提到的法向量

推导叉积的坐标定义和几何意义为什么是等价的

为什么叉积的坐标定义公式会和对应的几何意义是等价的哪,这里我们简单展示推导的思路,我们尝试计算下面的公式的结果。

向量的叉乘运算(向量的叉积)(4)

通过叉积的坐标形式代入并一步步展开、合并可以得出叉积的几何意义。

向量的叉乘运算(向量的叉积)(5)

julia语言直观演示向量的叉积

下面的动画演示了向量b在xy平面上旋转360°,红色的向量为向量a、b的叉积在3D空间的变化。

向量的叉乘运算(向量的叉积)(6)

附上这段演示动画的julia代码:

# 动画示例 using LinearAlgebra using PyPlot using PyCall @pyimport matplotlib.animation as anim fig = plt.figure() ax = fig.gca(projection="3d") vector_a = [1 0 0] vector_b = [1 0 0] vector_c = cross(vector_a vector_b) ax.quiver(0 0 0 vector_a[1] vector_a[2] vector_a[3] color="blue") ax.text(1.1 0 0 "a") ax.quiver(0 0 0 vector_b[1] vector_b[2] vector_b[3] color="blue") quiver = ax.quiver(0 0 0 vector_c[1] vector_c[2] vector_c[3] color="red") function init() ax.grid(true) ax.set_xlabel("X") ax.set_ylabel("Y") ax.set_zlabel("Z") ax.set_xlim([-1.2 1.2]) ax.set_ylim([-1.2 1.2]) ax.set_zlim([-1.2 1.2]) ax.set_title("cross product demo" color="b" fontsize=14) return (quiver ) end function update(frame) # ln.set_UVC(cos(frame) sin(frame)) # used for 2d quiver global quiver quiver.remove() vector_b = [cos(frame) sin(frame) 0] vector_c = cross(vector_a vector_b) ax.clear() init() ax.quiver(0 0 0 vector_a[1] vector_a[2] vector_a[3] color="blue") ax.text(1.1 0 0 "a") ax.quiver(0 0 0 vector_b[1] vector_b[2] vector_b[3] color="blue") ax.text(cos(frame) sin(frame) 0 "b") quiver = ax.quiver(0 0 0 vector_c[1] vector_c[2] vector_c[3] color="red") return (quiver ) end ani = anim.FuncAnimation(fig update frames=range(0 2*pi step=0.1) init_func=init blit=true interval=20) ani.save("./cross_product.gif" fps=20)

猜您喜欢: