您的位置:首页 > 其它

几何向量之向量乘法(叉乘)

2018-03-05 18:38 232 查看
紧接上一篇:http://blog.csdn.net/yinhun2012/article/details/79425674
之前我们学习了物理意义上的做功,也就是数学中向量点积的实际意义,这一篇我们学习物理上另外一种力的作用,也就是力矩。
物理上定义力矩是力对物体产生转动作用的物理量,这里我们想象一下现实中的力矩现象,比如陀螺,老式摇动柴油发动机,打隧道用的隧道机械都有力矩在其中。
这里我们看一下老式柴油发动机的摇把,如下图:



手对摇把产生OA的半径圆的切线方面力F摇动,那么会产生一种沿着Z轴的力矩L,物理上把求力矩L定义为力F 乘 力臂OA,既:L = F*OA。
这里力矩L可以看作一个和Z轴重合的向量,力矩L的数量值等于力F作用的那一刻(那一瞬间,后面我们在微分中会讲解一瞬的意义)与力臂OA组成的平行四边形(特殊情况下比如F为切线就是矩形)的面积,上图中力M就是普通情况,求AM'和MG的乘积救得到力矩的向量的模长。
扯了这么多,其实就是阐述力矩的这种定义,数学上我们把计算力矩称为计算叉积,接下来我们继续观察叉积的几何意义。
我们同样建立空间xyz坐标系,如下图:



向量OA和AB的叉积OC,OC的属性包括两个
①OC垂直于OA,AB所在的平面(不共线三点确定一个平面)
②OC的向量模长等于OA,AB组成的平行四边形的面积
接下来就要思考怎么计算OC这个向量了,为了直观些,我们继续看下图:



够形象吧,OC这个“力矩”垂直于OB且垂直于OA①,而且模长等于|OA|*|OB|*sin∠BOA②,如下图:



由①我们推算出OC的Z代数坐标分量,那么此时问题就变换成求Z分量了,如下图:



这里我们用xyz基坐标两两的叉积等第三轴的基坐标,这种特殊形式推出OC中z值。
下面我们用程序验证一下,如图:using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CrossMathFunc : MonoBehaviour {

public Transform aHead;
public Transform aTail;
public Transform bHead;
public Transform bTail;

void Start()
{
//A (a1,a2,a3)
Vector3 A = aTail.position - aHead.position;
//B (b1,b2,b3)
Vector3 B = bTail.position - bHead.position;
//用推导公式计算
Vector3 crossAB = new Vector3(A.y*B.z-A.z*B.y, A.z * B.x - A.x * B.z, A.x * B.y - A.y * B.x);

//用api计算
Vector3 apicrossAB = Vector3.Cross(A, B);
#if UNITY_EDITOR
Debug.LogFormat("crossAB = {0} apicrossAB = {1}", crossAB, apicrossAB);
#endif
}
}


上面我们介绍了向量叉积的含义和推导过程。
叉积在图形学中应用主要是计算法向量,因为图形学中经常会出现光线反射的问题,叉积提供了我们计算法向量的方法,后面我们继续推导光线反射。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: