UnityUnity 几何知识弧度三角函数向量运算点乘叉乘
Posted 是嘟嘟啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UnityUnity 几何知识弧度三角函数向量运算点乘叉乘相关的知识,希望对你有一定的参考价值。
文章目录
基础几何知识
角的度量方式
角的度量方式分为角度(Degree)和弧度(Radian)两种。角度就是将一个圆形切成360份,每一份就是1度角。弧度是当弧长等于圆的半径时即为1弧度。
如图所示:
角度弧度转换
常用换算:
π
=
180
度
\\ \\pi = 180度
π=180度
1
弧
度
=
180
度
/
π
\\ 1弧度 = 180度 / \\pi
1弧度=180度/π
1
角
度
=
π
/
180
度
\\ 1角度 = \\pi / 180度
1角度=π/180度
角度转弧度:
- 转换公式: 弧 度 = 角 度 数 ∗ π / 180 \\ 弧度 = 角度数 * \\pi / 180 弧度=角度数∗π/180
- Unity代码:radian = x * Mathf.Deg2Rad;
弧度转角度:
- 转换公式: 角 度 = 弧 度 数 ∗ 180 / π \\ 角度 = 弧度数 * 180 / \\pi 角度=弧度数∗180/π
- Unity代码:degree = x * Mathf.Rad2Deg;
三角函数
在直角三角形中(下图为例),如果 a 、 b 、 c 、 x \\ a、b、c、x a、b、c、x中的两个变量已知则能计算出另外两个变量的值。
计算公式
正弦:
s
i
n
(
x
)
=
a
/
c
\\ sin(x) = a / c
sin(x)=a/c (对比斜)
余弦:
c
o
s
(
x
)
=
b
/
c
\\ cos(x) = b / c
cos(x)=b/c (临比斜)
正切:
t
a
n
(
x
)
=
a
/
b
\\ tan(x) = a / b
tan(x)=a/b (对比临)
余切:
c
o
t
(
x
)
=
b
/
a
\\ cot(x) = b / a
cot(x)=b/a
正割:
s
e
c
(
x
)
=
c
/
b
\\ sec(x) = c / b
sec(x)=c/b
余割:
c
s
c
(
x
)
=
c
/
a
\\ csc(x) = c / a
csc(x)=c/a
反正弦:
a
r
c
s
i
n
(
a
/
c
)
=
x
\\ arcsin(a / c) = x
arcsin(a/c)=x
反余弦:
a
r
c
c
o
s
(
b
/
c
)
=
x
\\ arccos(b / c) = x
arccos(b/c)=x
反正切:
a
r
c
t
a
n
(
a
/
b
)
=
x
\\ arctan(a / b) = x
arctan(a/b)=x
已知一角和一边,求另外两边,用sin、cos、tan。
已知两边,求角,用arcsin、arccos、arctan。
常用三角函数值
使用方法
已知一个角和一条边,用
s
i
n
、
c
o
s
、
t
a
n
\\ sin、cos、tan
sin、cos、tan 。
已知两条边求角度,用
A
r
c
S
i
n
、
A
r
c
C
o
s
、
A
r
c
T
a
n
\\ ArcSin、ArcCos、ArcTan
ArcSin、ArcCos、ArcTan 。
Unity应用
在代码中调用Mathf.Sin等三角函数方法时传入的参数并不是角度,而是弧度。
比如如果我们想要获取sin30度的值不能这样写:Mathf.Sin(30)。这样是错的。
正确的写法应该是Mathf.Sin(30 * Mathf.Deg2Rad),将角度转为弧度再传参,得到的结果就是0.5了。
下图为官方API的描述。
要求输入的角度是以弧度为单位的,所以要用这些方法时经常要用到角度和弧度的转换。
向量
向量是一个数字列表,表示各个维度上的有向位移。它是一个有大小有方向的物理量。大小就是方向的模长,方向描述了空间中向量的指向。向量可以用来表示物体的位置和方向。
向量的大小:也就是向量的长度(一般称作为 模),向量a的模记为 ∣ a ⃗ ∣ \\ | \\vec a | ∣a∣ ,若 a ⃗ = ( x , y , z ) \\ \\vec a = (x, y, z) a=(x,y,z) 则 ∣ a ⃗ ∣ = x 2 + y 2 + z 2 \\ | \\vec a | = \\sqrt x^2 + y^2 + z^2 ∣a∣=x2+y2+z2 。代码中使用myVector.magnitude来获取向量的大小。
单位向量:即模为1的向量,在Unity中单位向量也就代表了向量的方向。可以记作 a ^ \\widehata a 。一个向量的单位向量,可以通过除以它模得到,即 a ^ = a ⃗ ∣ a ⃗ ∣ \\widehata = \\frac \\vec a | \\vec a | a =∣a∣a 。代码中使用myVector.normalized来获取向量的单位向量,也就是向量的方向。
零向量:即模为0的向量,零向量的方向是任意的。
相反向量:长度相等方向相反的向量, a ⃗ \\ \\vec a a 的相反向量为 − a ⃗ \\ -\\vec a −a。
平行(共线)向量:方向相同或相反的非零向量,记作 a ⃗ / / b ⃗ \\ \\vec a // \\vec b a//b。
向量加减法
向量的加减就是向量对应分量的加减,类似于物理学中力的正交分解。
向量相减
向量相减等于各分量相减。
[ x 1 , y 1 , z 1 ] − [ x 2 , y 2 , z 2 ] = [ x 1 − x 2 , y 1 − y 2 , z 1 − z 2 ] \\ [x1,y1,z1] - [x2,y2,z2] = [x1-x2 , y1-y2 , z1-z2] [x1,y1,z1]−[x2,y2,z2]=[x1−x2,y1−y2,z1−z2]
几何意义:向量a与向量b相减,结果理解为以b的终点为起点,以a的终点为终点的向量。方向由b指向a。
注意:我们可以把向量相减理解为a、b终点的连接,但实际上该向量准确起始位置应该是坐标原点。
实际应用:计算两点之间的距离和相对方向。
向量相加
向量相加等于各分量相加。
[ x 1 , y 1 , z 1 ] + [ x 2 , y 2 , z 2 ] = [ x 1 + x 2 , y 1 + y 2 , z 1 + z 2 ] \\ [x1,y1,z1] + [x2,y2,z2] = [x1+x2 , y1+y2 , z1+z2] [x1,y1,z1]+[x2,y2,z2]=[x1+x2,y1+y2,z1+z2]
几何意义:如下图,假设空间中有两个向量a和b,a与a’平行且长度相等,b与b’平行且长度相等。a+b就相当于a,b,a’,b’所围成的平行四边形的对角线。
也可以这么说,由向量a的起点出发,沿着a的方向走a的长度,然后沿着b的方向走b的长度,达到的点相当于从a的起点沿着a+b的方向走a+b的长度。
实际应用:物体的移动。
向量与标量的乘除
乘法:该向量的各分量与标量相乘
k
[
x
,
y
,
z
]
=
[
x
k
,
y
k
,
z
k
]
\\ k[x, y, z] = [xk, yk, zk]
k[x,y,z]=[xk,yk,zk] 。
除法:该向量的各分量与标量相除
[
x
,
y
,
z
]
/
k
=
[
x
/
k
,
y
/
k
,
z
/
k
]
\\ [x, y, z]/k = [x/k , y/k , z/k]
[x,y,z]/k=[x/k,y/k,z/k] 。
几何意义:缩放向量长度。
实际应用:加速、减速、放大、缩小。
点乘
点乘又称点积或内积。表示为各分量的乘积和。
[
x
1
,
y
1
,
z
1
]
⋅
[
x
2
,
y
2
,
z
2
]
=
x
1
x
2
+
y
1
y
2
+
向量运算与几何意义
向量指具有大小和方向的量,也称为矢量。可以从几何和坐标两个角度来理解。
1. 几何表示
向量可以用有向线段来表示。有向线段的长度表示向量的大小,向量的大小,也就是向量的长度。长度为 0 的向量叫做零向量。
长度等于 1 个单位的向量,叫做单位向量。箭头所指的方向表示向量的方向。
2. 坐标表示
空间中有无数条有向线段,长度和方向相同的向量也有无数条,那如何表征一个向量呢?
在空间或者平面建立坐标系,任何一个向量都可以平移到以原点为起点的位置,这时就可以用向量终点的坐标来表征这个向量,即坐标表示,
记为 $a = (x,y,...)$。
坐标表示和几何表示是不同的,几何表示的向量可以是任意位置,而坐标表示的向量起点只能是原点。
向量是线性空间(参考博客)中的元素,线性空间定义了加法和数乘运算,即向量的加法和数乘。
1. 加法运算
设两个向量 $a = (x_{1},y_{1}),b = (x_{2},y_{2})$。
先从坐标角度来理解下向量加法:两个向量和的坐标分别等于这两个向量相应坐标的和。
$$c = a + b = (x_{1} + x_{2}, y_{1} + y_{2})$$
2. 数乘运算
未完待续。。。。。。
以上是关于UnityUnity 几何知识弧度三角函数向量运算点乘叉乘的主要内容,如果未能解决你的问题,请参考以下文章