数学之向量的点积(点乘、数量积)
2014-03-04 15:31
423 查看
向量的点积(英语:dot product)(数量积的定义):
![](http://img.blog.csdn.net/20140304212216718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJ2b2tpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20140304212700906?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJ2b2tpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在其物理上面的几何意义是容易理解的。如下图所示:
![](http://img.blog.csdn.net/20140304214601250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJ2b2tpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
现在求F1在水平方向上的做功:
W = F1 * Cosθ * S
那么套用数量积公式:
力F1在水平方向位移S,可以表示为:
F1 * S = Cosθ * |F1| * |S|
上面的数量积公式的使用如下:
当θ夹角小于90度时,F1 * S > 0
当θ夹角大于90度时,F1 * S < 0
利用上面的特性,在游戏的开发中可以作为一个玩家的视野计算,对玩家身前可能存在的碰撞进行检测。
![](http://img.blog.csdn.net/20140304222427062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJ2b2tpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
如上图所示,2号蓝线为玩家的面朝的方向,我们可以知道1和3红线对2线的夹角是小于90度的,这也就是玩家的面朝的方向
再看4号线,与2号线的夹角是大于90度的,故向量2与向量4的点积是小于0的,故我们可以判断4是玩家的视野盲区,也就是玩家的身后。
我们如果需要对玩家身前是否有障碍需要判断的话,可以通过向量来实现。
-------------------------------------------------------------------------------------------------
我们首先设置的是RPG玩家的位置,假设是(10,10)
下面的向量描述都是以玩家为中心的描述。
我们设置他的视野范围是5,知道主角的朝向假设是向量(1,1)
现在有一个箱子的向量是(-3,4);
利用点积公式:
1 * (-3) + 1 * 4 = 1
因为1大于0,推导出他们的夹角θ是大于0小于等于90度的
故该箱子一定是位于玩家的前方的。
再次假设,玩家的视野角度是60度。计算Cosθ的值
Cosθ = 2 / (sqrt(2) * 5) = 2 / (1.4 * 5) = 2 / 7 = 0.2857
计算反余弦:ArcCos 0.2857 = 73.399305 °
知道了箱子与玩家朝向的向量(1,1)的夹角是73度,故可以知道,该箱子不在玩家的视野中。
如果还不懂,可以对照下图的大致图解:
几何意义是:是一条边向另一条边的投影乘以另一条边的长度。
在其物理上面的几何意义是容易理解的。如下图所示:
现在求F1在水平方向上的做功:
W = F1 * Cosθ * S
那么套用数量积公式:
力F1在水平方向位移S,可以表示为:
F1 * S = Cosθ * |F1| * |S|
上面的数量积公式的使用如下:
当θ夹角小于90度时,F1 * S > 0
当θ夹角大于90度时,F1 * S < 0
利用上面的特性,在游戏的开发中可以作为一个玩家的视野计算,对玩家身前可能存在的碰撞进行检测。
如上图所示,2号蓝线为玩家的面朝的方向,我们可以知道1和3红线对2线的夹角是小于90度的,这也就是玩家的面朝的方向
再看4号线,与2号线的夹角是大于90度的,故向量2与向量4的点积是小于0的,故我们可以判断4是玩家的视野盲区,也就是玩家的身后。
我们如果需要对玩家身前是否有障碍需要判断的话,可以通过向量来实现。
-------------------------------------------------------------------------------------------------
我们首先设置的是RPG玩家的位置,假设是(10,10)
下面的向量描述都是以玩家为中心的描述。
我们设置他的视野范围是5,知道主角的朝向假设是向量(1,1)
现在有一个箱子的向量是(-3,4);
利用点积公式:
1 * (-3) + 1 * 4 = 1
因为1大于0,推导出他们的夹角θ是大于0小于等于90度的
故该箱子一定是位于玩家的前方的。
再次假设,玩家的视野角度是60度。计算Cosθ的值
Cosθ = 2 / (sqrt(2) * 5) = 2 / (1.4 * 5) = 2 / 7 = 0.2857
计算反余弦:ArcCos 0.2857 = 73.399305 °
知道了箱子与玩家朝向的向量(1,1)的夹角是73度,故可以知道,该箱子不在玩家的视野中。
如果还不懂,可以对照下图的大致图解:
相关文章推荐
- 2015上半年教师资格考试高中数学(404)- 用向量数量积推导两角差余弦公式
- 数学基础 —— 向量运算(点积)
- 旋转向量与旋转矩阵的联系、点乘点积的意义、飞机的姿态角
- 数量积 向量的点积 即3D中任意两个三维向量的点积(数量积)推导及代码实现
- 数学基础复习笔记(1)——向量点积定义的证明
- 数学向量推导______Acperience( hdu 5734 2016多校 )
- [51NOD](1003)阶乘后面0的数量 ---数学
- 数学基础:向量
- 向量的叉乘和点乘在Unity中的意义
- 3D数学之-向量矩阵欧拉角和四元数
- 数学基础——矩阵向量求导
- 线性空间的向量组与数量矩阵的乘法
- 机器学习 深度学习用到的数学基础知识 标量、向量、矩阵和张量
- 09:向量点积计算
- [51NOD] 1009 数字1的数量 [数学][详解]
- 51nod 1009 数字1的数量(数学)
- #18.2#3D数学-向量(Vector)
- [Unity3D学习]3D数学基础之向量
- 数学基础:向量
- Unity Shader:向量在世界空间与切线空间中变换的相关数学原理详解