您的位置:首页 > 其它

向量的点乘和叉乘在游戏中的应用

2017-11-16 22:56 369 查看

点乘的应用:

(1) 点乘可以用来判断两个向量是否垂直,返回值为0,则垂直。(公式:abcosθ,向量夹角θ为90度,则垂直)(2)本质上其实是判断两个向量相似的程度(2个向量夹角越小,越相似)。(3)计算敌人在你的正方向上行走的距离,利用的是计算一个向量在另一个向量上的投影分量大小(根据点乘几何意义)

(4)得到2个向量的夹角:范围[0, 180] ,可以做游戏怪物的视角是否有查看到玩家,可以用来计算敌人是否在角色的***范围之内Vector A,B;
float dotValue = Vector3.Dot (A.normalized, B.normalized);
float angle = Mathf.Acos(dotValue) * Mathf.Rad2Deg;

当然,更简单的方法是float Vector3.Angle (Vector3 from, Vector3 to) (5)判断目标在自己的前后方位
Vector3.Dot(transform.forward, target.position)
返回值为正时,目标在自己的前方;返回值为负时,在自己的后方;返回值为0时,在自己的正左方或者正右方。
(6)模拟飞机飞行的状态,当飞机与vector3.up的点积等于0,证明飞机平行飞行;当小于0时候,证明飞机向下飞行;当大于0时候,证明飞机向上飞行。

叉乘的应用:

(1)叉乘可以用来判断两个向量是否平行或相交。返回值为0,则平行。
(2)用于求平面法线(叉乘的几何意义:absinθ)
(3)计算两个物体之间形成四边形的面积(|a||b|sinθ)
(4)得到2个向量的夹角:范围[-90,90]Vector A,B;
float value = Vector3.Cross (A.normalized, B.normalized);
float angle = Mathf.Asin(value) * Mathf.Rad2Deg;
(5)判断目标在自己的左右方位

Vector3.Cross(transform.forward, target.position).y 返回值为正时,目标在自己的右方;返回值为负时,在自己的左方;返回值为0时,在自己的正前方或者正后方。(6)将炮管的正方向向量 与 敌人位置减去炮管位置的向量 进行叉积,得到一个向量,炮管绕此向量旋转,可以使炮管旋转至对准敌人,实现定位敌人的作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  几何