Vectors(向量)
写成a⃗\vec{a}a或者a\bold{a}a
或者用起点和终点的AB→=B−A\overrightarrow{AB}=B-AAB=B−A
有长度和方向
没有绝对的起始位置
Vector Normalization(向量归一化)
向量的模(magnitude)写成∥a⃗∥\lVert\vec{a}\rVert∥a∥
单位向量(unit vector)即是一个单位长度的向量(a vector with magnitude of 1)
获取一个向量的单位向量:a^=a⃗/∥a⃗∥\hat{a}=\vec{a}/\|\vec{a}\|a^=a/∥a∥
用于表示方向
Vector Addition(向量相加)
几何上可以用平行四边形法则或三角形法则表示
代数上用基的相加表示
Cartesian Coordinates(笛卡尔坐标)
用两个互相垂直的基来表示向量
A=(xy)A= \begin{pmatrix}x \\y \end{pmatrix}A=(xy) AT=(xy)A^T= \begin{pmatrix}x &y \end{pmatrix}AT=(xy) ∥A∥=x2+y2\|A\|=\sqrt{x^2+y^2}∥A∥=x2+y2
Vector Multiplication(向量乘积)
dot product(点乘)
a⃗⋅b⃗=∥a⃗∥∥b⃗∥cosθ\vec{a}\cdot\vec{b}=\|\vec{a}\|\|\vec{b}\|\cos{\theta}a⋅b=∥a∥∥b∥cosθ(θ\thetaθ为两向量夹角)
cosθ=a⃗⋅b⃗∥a⃗∥∥b⃗∥\cos{\theta}=\dfrac{\vec{a}\cdot\vec{b}}{\|\vec{a}\|\|\vec{b}\|}cosθ=∥a∥∥b∥a⋅b
点乘满足结合律、分配律、交换律
图形学中的点乘应用
- 得到两个向量的夹角
- 得到一个向量在另一个向量上的投影
- 分解向量
- 区分前方和后方
cross produce(叉乘)
- 叉乘的结果是个垂直于两个向量的向量,方向由右手螺旋定则决定
cross product in graphics
- 区分左/右
a⃗×b⃗>0\vec{a}\times\vec{b}>0a×b>0,a⃗\vec{a}a在b⃗\vec{b}b右方,反之在左方
- 区分里/外
p点在三角形里面,三个叉乘值均为正数或均为负数。在三角形外部则三个叉乘值不同号。
AB→×AP→>0\overrightarrow{AB}\times\overrightarrow{AP}>0AB×AP>0 BC→×BP→>0\overrightarrow{BC}\times\overrightarrow{BP}>0BC×BP>0 CA→×CP→>0\overrightarrow{CA}\times\overrightarrow{CP}>0CA×CP>0
- 区分凹多边形
对凸多边形而言,例如上方的三角形,AB⃗×BC⃗和BC⃗×CB⃗和CB⃗×AB⃗同号。\vec{AB}\times\vec{BC}和\vec{BC}\times\vec{CB}和\vec{CB}\times\vec{AB}同号。AB×BC和BC×CB和CB×AB同号。
若是凹多边形,则凹入的点的两条边向量叉乘值和其他叉乘值异号
Matrices(矩阵)
- 在图形学中被广泛应用于表达各种转换(Transformations)
Matrix-Matrix Multiplaction
- AmnBnp=CmpA_{mn}B_{np}=C_{mp}AmnBnp=Cmp 其中矩阵A的列数必须等于矩阵B的行数,相乘结果的矩阵C行数和列数各为A的行数和B的列数
- 不支持交换律
Cross Product
向量的叉乘可以写成矩阵作用形式:
a⃗×b⃗=A∗b⃗=(0−zayaza0−xa−yaxa0)(xbybzb)\vec{a}\times\vec{b}=A*\vec{b}=\begin{pmatrix}0&-z_a&y_a\\z_a&0&-x_a\\-y_a&x_a&0\end{pmatrix}\begin{pmatrix}x_b\\y_b\\z_b\end{pmatrix}a×b=A∗b=⎝⎛0za−ya−za0xaya−xa0⎠⎞⎝⎛xbybzb⎠⎞