Unity 3D 点乘和叉乘

来源:互联网 发布:java基础入门pdf百度云 编辑:程序博客网 时间:2024/05/16 10:07

点乘:两个向量点乘得到一个标量 ,数值等于两个向量长度相乘后再乘以二者夹角的余弦值 。如果两个向量a,b均 为单位 向量 ,那么a.b等于向量b在向量a方向上的投影的长度

点乘后得到的是一个值

若结果 == o,则 两向量 互垂直 。
若结果 < 0  ,则 两向量夹角大于90°。
若结果 >0  ,则两向量夹角小于 90°。


 点积的计算方式为:  a·b=|a|·|b|cos<a,b>  其中|a|和|b|表示向量的模,<a,b>表示两个向量的夹角。另外在 点积 中,<a,b>和<b,a> 夹角是不分顺序的。所以通过点积,我们其实是可以计算两个向量的夹角的。另外通过点积的计算我们可以简单粗略的判断当前物体是否朝向另外一个物体: 只需要计算当前物体的transform.forward向量与 (otherObj.transform.position – transform.position)的点积即可, 大于0则面对,否则则背对着。当然这个计算也会有一点误差,但大致够用。


叉乘:两 个向量的叉乘得到一个新的向量 ,新向量垂直于原来的两个向量再乘夹角的正弦值 

叉乘后得到的还是一个向量


在unity3D里面。两个向量的点乘所得到的是两个向量的余弦值,也就是-1 到1之间,0表示垂直,-1表示相反,1表示相同方向。 两

个向量的叉乘所得到的是两个向量所组成的面的垂直向量,分两个方向。 简单的说,点乘判断角度,叉乘判断方向。 形象的说当一个

敌人在你身后的时候,叉乘可以判断你是往左转还是往右转更好的转向敌人,点乘得到你当前的面朝向的方向和你到敌人的方向的所

成的角度大小


叉积的定义: c =a x b  其中a,b,c均为向量。即两个向量的叉积得到的还是向量

               性质1: c⊥a,c⊥b,即向量c垂直与向量a,b所在的平面 。 
               性质2: 模长|c|=|a||b|sin<a,b>


5,向量的投影

        介绍:
                va向量在vb向量上的投影又可以称为a向量在b向量上的分量。
       方法:
                Vector3.Project(va,vb)
6,向量的反射
        介绍:
                V对于法线N的反射,这个最有意思了,想想一下光反射或者桌球反弹,就是那个概念。可以用于模拟一下物理碰撞。
       方法:
                Vector3. Reflect (V, N);     (  此处法线 N 需要标准化 )

1 0