Unity3D-数学1-三角函数
Math.sin() 与 Math.cos() 用法
Math.sin(x) x 的正玄值。返回值在 -1.0 到 1.0 之间;
Math.cos(x) x 的余弦值。返回的是 -1.0 到 1.0 之间的数;
这两个函数中的X 都是指的 “弧度” 而非 “角度”,
弧度的计算公式为: 2*PI /360*角度 => 30° 角度的弧度 = 2*PI/360*30
<<如何得到圆上每个点的坐标>>
解决思路:根据三角形的正玄、余弦来得值;
假设一个圆的圆心坐标是(a,b),半径为r
则圆上每个点的
X坐标= a + Math.sin(2*Math.PI / 360) * r ;
Y坐标= b + Math.cos(2*Math.PI / 360) * r ;
targetPos.x = mover.MoveTarget.Position.x + disR * Mathf.Sin(angle * Mathf.PI / 180); targetPos.y = mover.MoveTarget.Position.y + disR * Mathf.Cos(angle * Mathf.PI / 180);
<<如何求时钟的秒针转动一圈的轨迹>>
假设秒针的初始值(起点)为12点钟方向,圆心的坐标为(a,b)。
解决思路:一分钟为60秒,一个圆为360°,所以平均每秒的转动角度为 360°/60 = 6°;
for(var times=0; times<60; times++) { var hudu = (2*Math.PI / 360) * 6 * times; var X = a + Math.sin(hudu) * r; var Y = b - Math.cos(hudu) * r // 注意此处是“-”号,因为我们要得到的Y是相对于(0,0)而言的。 }
<< 数学向量 >>
向量加减法:

向量相乘: 点乘和叉乘
内积 a b =丨a丨丨b丨cosα (内积无方向 叫点乘)
外积 a × b =丨a丨丨b丨sinα (外积有方向 叫叉乘)
点乘: 是一代数,而叉乘的结果是一向量.
点乘: 向量的内积、数量积、结果是一个数.
向量a·向量b = |a| |b| cos
物理学: 已知力与位移求功, 就是求向量F与向量s的点乘。
叉乘: 也叫向量的外积、向量积、结果是一个向量.
|向量c| = |向量a × 向量b| = |a| |b| sin
向量c的方向与a, b所在的平面垂直,且方向要用“右手法则”判断
・用右手的四指先表示向量a的方向
・手指朝着手心的方向摆动到向量b的方向
・大拇指所指的方向就是向量c的方向
物理学: 已知力与力臂求力矩,就是向量的叉乘
正弦:在直角三角形中,任意锐角A的对边与斜边的比叫做A的正弦,记作sinA 即sinA=A的对边/斜边
余弦:角A的邻边比斜边 叫做A的余弦,记作cosA 即cosA=角A的邻边/斜边(直角三角形) 记作 cos=x/r
平滑位移 : Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);
平滑位移 : Vector3 Slerp(Vector3 from, Vector3 to, float t);
变动一次坐标 : m_transform.Translate(new Vector3(rx, 0, -m_Speed * Time.deltaTime));
求方向 : Vector3 relativePos = this.m_transform.position – m_Player.position
求距离:
float dis = Vector3.Distance(v1, v2);
float f1 = (v1 – v2).sqrMagnitude;
float f3 = (v1 – v2).magnitude;
缩放正向: Vector3 v3 = this.m_transform.forward * 200f;
射线检测:
Ray r = new Ray(source, dest);
Physics.Raycast(r, out hit, 1000, m_ShootMask)
加一个力: rigidbody.AddForce (0, 10, 0);
浙公网安备 33010602011771号