unity3d math 常用的数学
来源:互联网 发布:php 整数保留2位小数 编辑:程序博客网 时间:2024/06/04 18:19
1.计算游戏中敌人被击退的方向:类似
Vector3 lhs = (Vector3) (this.parentChara.MoveDirection * this.parentChara.MoveSpeed);
Vector3 rhs = component.parentChara.myTransform.position - this.parentChara.myTransform.position;
rhs.y = 0f;
float num = Vector3.Dot(lhs, rhs);
if (num > 0f)
{
component.parentChara.PushVelocity += (Vector3) ((rhs.normalized * num) * 0.5f);
}
2.Vector.dot
public class DotTest : MonoBehaviour {
public Vector3 v1;
public Vector3 v2;
public float dot;
public float cos;
// Use this for initialization
void Start () {
v1 = new Vector3(2,2,0);
v2 = new Vector3(1, 0, 0);
}
// Update is called once per frame
void Update () {
dot = Vector3.Dot(v1.normalized, v2.normalized);
cos = Mathf.Cos(Mathf.PI/4);
}
}
一、点积(又称“数量积”、“内积”)
1、理论知识
在数学中,点积的定义为a·b=|a|·|b|cos<a,b> 【注:粗体小写字母表示向量,<a,b>表示向量a,b的夹角,取值范围为[0,π]】。从定义上,我们知道向量的点积得到的是一个数值。而不是向量(这点大家要注意了!要与叉积进行区别)。另外点积中的夹角<a,b>没有顺序可言,即<a,b>=<b,a>(或a·b=b·a)。所以我们可以通过点积得到两个向量之间的夹角。<a,b>= arccos(a·b / (|a|·|b|))。并且通过点积的正负值,我们可以判断两个向量的方向关系。如果为正,即>0,他们夹角为(0,π/2)。如果为负,夹角为(π/2,π)。
2、Unity3D中应用
在Unity中,点积表示为Vector3.Dot(Vector3,Vector3):float——参数为2个向量,返回值为浮点型。
a.normalized表示该方向的单位向量,即方向与向量a相同,长度为1的向量。Mathf.Acos()即数学中的arccos()函数。Mathf.Rad2Deg表示将弧度转化为角度。
结果如下图:
二、叉积(又称“向量积”、“外积”)
1、理论知识
数学上的定义:c=axb【注:粗体小写字母表示向量】其中a,b,c均为向量。即两个向量的叉积得到的还是向量!
性质1:c⊥a,c⊥b,即向量c垂直与向量a,b所在的平面。
性质2:模长|c|=|a||b|sin<a,b>
性质3:满足右手法则。从这点我们有axb ≠ bxa,而axb = - bxa。所以我们可以使用叉积的正负值来判断向量a,b的相对位置,即向量b是处于向量a的顺时针方向还是逆时针方向。
2、Unity中应用
在Unity中,叉积表示为Vector3.Cross(Vector3,Vector3):Vector3——参数为2个向量,返回值也为向量。
Vector3.Distance()用于计算2个Vector3的距离,在这里我们可以得到叉积向量的模长。
结果如下图:
- unity3d math 常用的数学
- Math 中常用的数学函数
- java数学类Math的常用方法
- python math 常用的数学函数
- java中Math常用的数学函数
- Math数学方法--常用
- math.h常用数学函数
- java数学函数Math类中常用的方法
- JS Math数学函数中一些常用的方法
- java数学函数Math类中常用的方法
- Math 类中一些常用的数学运算
- 【原创】开源Math.NET基础数学类库使用(07)常用的数学物理常数
- java 常用数学方法 Math常用方法 必须掌握--Java的常用类
- 使用math.h中常用数学常数
- iOS math.h 常用数学函数
- IOS开发 - math.h常用数学方法
- iOS math.h 常用数学函数
- iOS math.h 常用数学函数
- iOS关于如何让<界面切换逻辑>与<数据业务逻辑>解耦的探讨
- Thrift 操作 Hbase
- libgdx demo
- DedeCMS 友情链接按分类网站类型调用的方法
- TAR命令的基本使用方法详解
- unity3d math 常用的数学
- hdu4973(线段树)
- SpringMVC一次请求多次进入Control的原因
- poj 2983 差分约束
- Techniques for preventing overfitting in training Deep Neural Networks
- 用curl模拟http请求获取网页
- 文件操作一些总结
- IP(Internet Protocal) 地址 说明
- c++Primer学习笔记之一:程序的编译与执行