基本概念

向量:表示方向和长度
- 向量的记号方法:a=AB=B−A,这里的A和B表示从原点(0,0)出发的向量
- 直角坐标系中记作:A=(xy),这里采用1*2矩阵的表示方式,方便
- 向量的长度(magnitude) :∥a∥=x2+y2
单位向量: 长度为1的向量,记作:a=∥a∥a
向量运算 - 点乘(Dot Product)
a⋅b=∥a∥∥∥b∥∥cosθ=⎝⎛xayaza⎠⎞+⎝⎛xbybzb⎠⎞=xaxb+yayb+zazb
a⋅b= aTb= (xayaza)⎝⎛xb yb zb⎠⎞=(xaxbyaybzazb)
在图形学中应用:
- 寻找两个向量间的夹角(比如,光源和平面的夹角)
- 一个向量到另一个向量的投影
- 测量两个方向的接近程度
- 分解向量(方向)
- 确定 “前”“后”关系
- 用一个点和法线向量可以表示一个平面,通过投影知道是否在平面上
向量运算 - 叉乘(Cross Product)
运算:
a×b=∣∣a∣∣∣∣b∣∣sinθ=⎝⎛yazb−ybzazaxb−xazbxayb−yaxb⎠⎞=A∗b=⎝⎛0za−ya−za0xaya−xa0⎠⎞⎝⎛xbybzb⎠⎞
其中,A∗=⎝⎛0za−ya−za0xaya−xa0⎠⎞是 a 的是对偶矩阵(dual matrix)
性质:
- a×a=0
- a×(b+c) = a×b+a×c (结合律)
- (ka)×b = a×(ka)=k×(a×b) (分配律)
- a×b=−b×a (不满足交换律哦!)
在图形学中应用:
-
判断 “左”“右”,某个物体处于另一个物体的左边还是右边
- A 叉乘 B,如果方向向上表示在右边;如果是方向向下,表示在左边
-
判断 “内”“外”,判断点是否在三角形的内部还是外部
- 通过计算每个顶点到p的向量 和 三条边组成的向量的叉乘
- 如果是同一方向 -> 在内部
- 如果不是 -> 在外部
-
在任意位置构建正交坐标系(因为叉乘的结果是垂直于叉乘向量的向量),叉乘的结果是生成一个垂直于两个向量的向量,就好比知道垂直的 x-y 就知道 z 了
-
计算三角形法线:n=∣∣AC×AB∣∣AC×AB
-
计算三角形面积:St=21AB×AC
-
计算四面体(四个顶点 A,B,C,D)的体积:V=61BA⋅∣∣CA×DA∣∣CA×DA