精华内容
下载资源
问答
  • 向量点乘 a·b 和叉乘 a×b

    千次阅读 2020-05-29 20:58:25
    向量点乘 a·b 和叉乘 a×b

    点乘:

    点乘就是 |a|·|b|·cosθ, (得结果是一个数字float);
    翻译过来就是: 向量a的长度 乘 向量b的长度 再乘 向量ab的夹角;
    我们所需要关心的就是这个夹角;
    夹角小于90°, cosθ就大于0, 点乘的结果就大于0;
    夹角大于90°, cosθ就小于0, 点乘的结果就小于0;
    就是这么简单;

    那有什么用呢?

    答: 判断敌人在我前面还是后面;

    想象以我的眼睛向前发一条射线, 作为向量a;
    再想象我向敌人发一条射线, 作为向量b;
    看dot的正负
    如果是正, 即夹角小于90°, 即敌人在我面前180°内
    如果是负, 即夹角大于90°, 即敌人在我身后180°内

    Vector3 a = me.forward;
    Vector3 b = enemy.position - me.position;
    float dot = Vector3.Dot(a, b);
    if(dot > 0)
    {
    	//敌人在我前边
    }
    
    还有别的什么用处呢?

    求b在a上的投影长度
    因为: a·b = |a|·|b|·cosθ
    又因为: 投影 = |b|·cosθ
    所以: 投影 = a·b ÷ |a|

    求θ的角度
    已知a·b的情况下
    cosθ = a·b ÷ |a| ÷ |b|
    再用反余弦, 就能求θ的角度

    叉乘:

    叉乘的公式和原理你不用懂;
    你只需要知道, 叉乘的结果还是个向量(Vector);
    这个向量垂直于ab向量所在的平面;
    冲上或者冲下

    也就是你只需要看结果的y值的正负号就行了, 就知道冲上还是冲下
    用来判断敌人在我左边还是右边;

    想象以我的眼睛向前发一条射线, 作为向量a;
    再想象我向敌人发一条射线, 作为向量b;
    叉乘的结果要么是冲上, 要么是冲下
    最后我们只要看叉乘向量的y就知道是左边还是右边了;

    Vector3 a = me.forward;
    Vector3 b = enemy.position - me.position;
    Vector3 cross = Vector3.Cross(a, b);
    if(cross.y > 0)
    {
    	//敌人在我的......左还是右来着, 我忘了
    }
    

    叉乘是按照右手定则算的, 而Unity是左手坐标系, 所以结果是相反的, 所以正就是负, 负就是正;
    (右手定则呢, 就是3个向量都相互垂直, 已知其中2个来确定第3个, 具体是怎么算的, 自己去看百度百科)
    在这里插入图片描述
    (图示为错误示范)

    其实点乘也可以判左右

    //区别就是这次不是以我的眼睛发射线(me.forward)作为向量a, 而是以我的右手方向(x轴的正方向)(me.right)作为向量a

    Vector3 a = me.right;
    Vector3 b = enemy.position - me.position;
    float dot = Vector3.Dot(a, b);
    if(dot > 0)
    {
    	//敌人在我右边
    }
    else
    {
        //敌人在我左边
    }
    
    在不能转身的2D游戏里一般用不到这些点乘叉乘什么的

    因为, 你在我左边, 你的x就比我的x小, 就这么简单;

    if(you.position.x < me.position.x)
    {
    	//你在我左边
    }
    

    以下是从哔哩哔哩<现代计算机图形学入门>看的

    还能用来判断点是否在三角内

    在这里插入图片描述
    判断点P是否在三角形ABC内:

    先做成3个首尾相交的向量AB, BC, CA
    先AB×AP, 好, AP在左侧
    再BC×BP, 好, 还是BP在左侧
    再CA×CP, 好, 还是CP在左侧
    好, 都在左侧
    证得: P在三角形内

    问: 那如果ABC 3个点是顺时针排布的呢?
    答: 那就看是否都在右侧
    问: 那我们怎么知道他是顺时针还是逆时针呢?
    答: 我们不需要知道, 只要是同左或者同右, 就可以判定: 点在三角形内

    注意: 还有点P刚好在三角形边上的情况, 那种另外算
    注意: 该方法可适用于所有的"凸多边形"

    点乘和点乘的矩阵表示:

    在这里插入图片描述

    展开全文
  • 向量点乘

    2020-01-08 14:20:50
    向量点乘 a * b 高中数学中我们可以得到公式 a * b = |a| * |b| * cos<a,b> 可以使用点乘获取两个向量的前后位置,如下图所示 案例一(案例中将y去掉,相当于俯视坐标系之后x,z): Vector3 a = ...

    向量的点乘 a * b

    高中数学中我们可以得到公式 a * b = |a| * |b| * cos<a,b>

    可以使用点乘获取两个向量的前后位置,如下图所示

    在这里插入图片描述
    在这里插入图片描述

    案例一(案例中将y去掉,相当于俯视坐标系之后x,z):

     Vector3 a = new Vector3 (1,0,2);
    
     Vector3 b = new Vector3 (2,0,1);
    
    	// Use this for initialization
    void Start () {
        	Debug.LogError(Vector3.Angle(a,b));//36.8699
    
            Debug.LogError(Vector3.Dot(b,a));//4
    
            Debug.LogError(Vector3.Dot(b,d));//-5
    
            Debug.LogError(Vector3.Dot(a,d));//-4
    
            Debug.LogError(Vector3.Dot(b,c));//3
    }
    

    上面的代码中我们可以看出来 ∠aob = 36.8699°
    根据点乘公式:向量a * 向量b = |a| * |b| * cos36.8699° = 根5 * 根5 * cos36.8699° = 4;

    此时判定这里a是在b的前面的位置,为什么这么说是因为cos曲线告诉我们在夹角小于90°时 cos<a,b>大于0,反之小于0,所以我们可以用点乘来计算向量的位置。注意如果此时点乘结果为0是代理两个向量垂直。
    总结,Vector3.Dot(x,y) > 0 代表y在x的前面,反之则y在x的后面,判断左右时找一个与之垂直的即可得到左右,方法同理。
    展开全文
  • 3维向量点乘叉乘运算

    万次阅读 2020-11-04 20:30:36
    点乘可以用如下公式表示含义,θ为两个向量的夹角 A·B = |A||B|Cos(θ)* 通过上面的公式我们可以得到,两个向量的夹角以及一个向量在另一个向量上面的投影。 计算夹角: Cos(θ) = A·B/(|A|*|B|)

    3维向量的点乘叉乘运算

    三维向量的点乘

    点乘得到的是对应元素乘积的和,是一个标量,没有方向
    V1( x1, y1, z1)·V2(x2, y2, z2) = x1x2 + y1y2 + z1*z2

    点乘可以用如下公式表示含义,θ为两个向量的夹角
    A·B = |A||B|Cos(θ)*
    通过上面的公式我们可以得到,两个向量的夹角以及一个向量在另一个向量上面的投影。
    计算夹角:
    Cos(θ) = A·B/(|A|*|B|)
    计算A向量在B向量上面的投影S为:
    S = A·B/|B|

    三维向量的叉乘

    对向量u, v叉乘,我们得到的是同时垂直于u又垂直于v的向量。用公式表达如下:

    n = u(x1, y1, z1) x v(x2, y2, z2)
    = (y1z2 - y2z1, x2z1-z2x1, x1y2 -x2y1)

    用矩阵表达为:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    叉乘的意义为,方向为两向量的组成平面的法向量方向,大小为两向量组成的平行四边形的面积。

    点到直线的距离

    计算点到直线距离可以用叉乘的数学含义来计算,向量叉乘的大小为两向量组成平行四边形的面积。已知O, 和A,B两点,计算O到AB的距离。

    可以得到向量OA, 以及AB, 距离为
    S = |OA x AB| / |AB|

    点到平面的距离

    点到平面的距离可以用点乘的方法来计算。
    如下图所示,只需要计算向量AP 在平面法向量的投影就可以得出。
    在这里插入图片描述[公式].

    https://blog.csdn.net/zhangSMILE123456/article/details/48711719
    https://zhuanlan.zhihu.com/p/154570761

    展开全文
  • 向量点乘和叉乘

    2019-11-11 18:01:53
    向量是由n个实数组成的一个n行1列(n1)或一个1行n列(1n)的有序数组 ...点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量a向量方向上的投影,有公式: 二、叉乘公式 两...

    向量是由n个实数组成的一个n行1列(n1)或一个1行n列(1n)的有序数组

    一、向量的点乘

    ,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。
    点乘公式

    对于向量a和向量b:
    在这里插入图片描述在这里插入图片描述
    a和b的点积公式为:
    在这里插入图片描述
    点乘几何意义
    点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,有公式:
    在这里插入图片描述

    二、叉乘公式

    两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。
    对于向量a和向量b:
    在这里插入图片描述
    a和b的叉乘公式为:
    在这里插入图片描述
    其中:
    在这里插入图片描述
    根据i、j、k间关系,有:
    在这里插入图片描述
    叉乘几何意义
    在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。

    在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。如下图所示:
    在这里插入图片描述
    在二维空间中,叉乘还有另外一个几何意义就是:aXb等于由向量a和向量b构成的平行四边形的面积。

    展开全文
  • Math:向量点乘与叉乘

    千次阅读 2019-08-07 00:57:57
    向量的内积又称为点乘,设两个向量a,b∈R3a,b\in R^3a,b∈R3 ,则这两个向量点乘结果为:对应分量的乘积和,计算结果为一个数值。如下为两向量点乘的计算过程: ab=aTb=∑i=13aibi=∣a∣∣b∣cos⟨a,ba\...
  • 向量点乘与叉乘的几何意义

    万次阅读 多人点赞 2016-11-06 21:59:35
    向量点乘:a * b公式a * b = |a| * |b| * cosθ 点乘又叫向量的内积、数量积,是一个向量和它在另一个向量上的投影的长度的乘积;是标量。 点乘反映着两个向量的“相似度”,两个向量越“相似”,它们的点乘
  • 向量点乘与叉乘

    千次阅读 2019-03-30 21:07:44
    向量点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量: a * b 公式a * b = |a| * |b| * cosθ 点乘又叫向量的内积、数量积,是一个...
  • 四、向量点乘

    千次阅读 2016-12-20 16:07:59
    叉乘 向量点乘公式1: 公式2:结果是一个标量 求一个向量的夹角(反余弦) 公式1: a · b = ‖a‖ · ‖b‖cosθ 公式2: 两个向量的方向判断: a · b θ Angle is a and b are > 0 0° ≤ θ ° ...
  • 向量点乘(一)

    万次阅读 2019-05-18 10:46:52
    向量点乘(一) 1.点乘的定义 向量u和向量v之间最小的夹角我们记做为[u,v],如下图所示,两个向量之间的夹角我们用绿色弧形表示,其中一个夹角用绿色矩形表示,这意味着这两个向量的夹角为90度或者是π/2,即[u,v...
  • 向量点乘相关公式推导

    万次阅读 2018-06-29 16:07:21
    1.向量点乘公式推导和几何解释一般来说,点乘结果描述了两个向量的“相似”程度,点乘结果越大,两向量越相近。01.向量点乘(dot product)是其各个分量乘积的和,公式:用连加号写:02.几何解释:点乘的结果是一个...
  • 向量点乘与叉乘公式

    万次阅读 2010-08-12 12:49:00
    向量:u=(u1,u2,u3) v=(v1,v2,v3) 叉积公式:u x v = { u2v3-v2u3 , u3v1-v3u1 , u1v2-u2v1 } 点积公式:u * v = u1v1+u2v2+u3v3
  • 向量点乘

    2017-04-19 14:05:21
    向量点乘公式(向量内积) 对于向量a和向量ba=[a1 , a2 , … an] b=[b1 , b2 , … bn] 点积公式为: a * b=a1b1 +a2b2+… +anbn 点乘的计算夹角 现有向量 a b, 得向量c=a-b 根据三角形余弦定理有: ...
  • 关于向量点乘和叉乘的基本知识

    千次阅读 2017-03-06 20:47:20
    向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组; ...向量点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘...对于向量a向量b:  
  • 向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组; 向量点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘...对于向量a向量b
  • Unity中点乘和叉乘点乘(API: Vector3.Dot())点乘的计算公式点乘的几何意义用途之一:判断一个物体当前方位利用点乘求出角度叉乘(API: Vector3.Cross())叉乘计算公式叉乘的几何意义判断物体是在左侧还是右侧 点乘...
  • 定义:两个向量ab的内积为 a·b = |a||b|cos∠(a, b),0·a =a·0 = 0;若ab是非零向量,则ab向量正交的充要条件是a·b = 0。 向量内积的性质: a^2 ≥ 0;当a^2 = 0时,必有a = 0. (正定性) a·b = b·a. ...
  • 向量点乘相关公式推导及 几何解释

    万次阅读 2013-04-08 14:57:14
    1.向量点乘公式推导和几何解释 01.向量点乘(dot product)是其各个分量乘积的和,公式: 用连加号写: 02.几何解释: 点乘的结果是一个标量,等于向量大小与夹角的cos值的乘积。 ab = |a||b|cos...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,489
精华内容 2,995
关键字:

向量a点乘向量b的公式