美文网首页
游戏中的数学-向量

游戏中的数学-向量

作者: JervieQin | 来源:发表于2018-05-07 20:59 被阅读0次

首先我们来回顾一下二维向量(三维雷同)的运算公式:

加法:(x1,y1)+(x2,y2) = (x1+x2,y1+y2)

减法:(x1,y1) - (x2,y2) = (x1-x2,y1-y2)

点乘:(x1,y1)(x2,y2) = x1x2+y1*y2

叉乘:(x1,y1)X(x2,y2) = x1y2-x2y1

一:加法

向量加法满足平行四边形法则,即相加后的向量等于对角线向量。在unity中最常见的用法例如物体的移动(另外还可以使用Translate)。拿炮弹做例子,我们看看向量在游戏中的运用。

e.g.简单移动
transform.position += Vector3.one*Time.deltatime;
e.g.描述速度:初始点是原点,速度向量是velocity (50,0,0),这样,每隔一段时间就要更新物体的坐标。
transform.position +=velocity * Time.deltatime;

二:减法

向量的减法满足三角形法则,即相减后的向量就是两向量围成三角的第三边,方向指向被减向量。在unity中最常见的用于获取方向、向量长度等。

e.g.让对象向目标直线移动

Vector3 direction = (Position1 - Position2).normalized;     //获取方向向量
if (transform.position != end)
            transform.Translate(direction*0.2f*Time.deltaTime);  //沿一个方向直线移动

再拿炮弹打比方:炮弹在移动过程中,收到的各种阻力,推力,都能改变它的移动方向,这里就涉及到了向量的一些基本操作。

接下来重点讲一下向量的点乘和叉乘。

三:点乘

点乘也叫数量积,求出来的是一个数 ( 还记得高中数学中求两个向量是否为直角就是看他点乘结果是否为0) 。向量点乘还有一个比较重要的公式是:A * B = |A||B|cosθ。

下面这张图说明的是点积返回的结果与两个向量之间夹角的关系:


点乘结果示意图

因此游戏中多通过点乘+反余弦+弧角转换来计算两向量之间的夹角。以此来实现物体从点A向点B移动时的转向效果。

又例如:我们可以通过点乘来判断目标在不在视野内。

        Vector3 mySelf = transform.position;
        Vector3 direction = Obj.position - a;

        //假定我的视野范围是一个半圆
        if (Vector3.Dot(mySelf .normalized, direction .normalized) > 0)
            Debug.Log("目标在自己视野内");
        else
            Debug.Log("目标不在自己视野内");
示意图.png

e.g.转向代码

image 效果

四:叉乘

叉乘和点乘相似,但是比点乘更有用。相似之处在于:它也可以求夹角。但是叉乘的结果是一个向量而不是数。这个结果就是“法向量”,它表示的是方向。在unity中它可以算出玩家与怪物的位置关系,例如怪物在玩家的左侧。这样玩家就可以转动更小的角度。又例如,可以判断点在直线的上方还是下方,判断凹凸多边形等等。

在二维平面中:A X B = |A| * |B| *sin , 第三维即方向,能表示物体间的左右位置关系。

示例

友情链接

相关文章

  • Unity基础-向量

    向量是2D、3D数学研究的标准工具,在3D游戏中向量是基础。 一、向量 1、向量的数学定义 向量就是一个数字列表,...

  • 游戏中的数学-向量

    首先我们来回顾一下二维向量(三维雷同)的运算公式: 加法:(x1,y1)+(x2,y2) = (x1+x2,y1+...

  • 向量人生

    向量,向量是一个数学概念。 那什么是向量?可以简单解释为起点与终点的位置,也就是向量的值。 为什么要说数学中的向量...

  • 向量

    向量对数学家是数字列表向量对程序员是数组 数学上区分向量和标量速度和位移是向量,速率和长度是标量 向量的维度:数的...

  • 【数学】向量

    一、向量 1. 定义 向量(Vector): vector, in mathematics, is a quant...

  • R语言向量计算的数学函数汇总2021.1.21

    一、向量函数 1.数学函数 sum(向量名):求和 max(向量名):返回向量最大值 min(向量名):返回向量最...

  • python数据分析(二) numpy 向量

    一、向量是什么 在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。...

  • python中向量指的是什么意思

    一、向量是什么 在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。...

  • 全面解析向量

    首先先给向量来个教科书的定义. 在数学中,几何向量(也称为欧几里得向量,通常简称向量、矢量),指具有大小(magn...

  • 机器学习(四) 支持向量机

    支持向量机的数学推导较复杂,本篇文章不对支持向量机的数学原理进行推导。仅仅从支持向量机要解决的问题出发,大致推导支...

网友评论

      本文标题:游戏中的数学-向量

      本文链接:https://www.haomeiwen.com/subject/ysqbrftx.html