1. 线性代数

因为数学库有好多现成的,这里只是写着玩,方便理解。

1. dot product: 投影长度

ab=|a||b|cosθ=i=1naibi=aTb

2. cross product: 有向面积, 右手定则

a×b = |a||b| sinθn^

a×b=c,a=(ax,ay,az)T,b=(bx,by,bz)T

, 则:

c=(aybzazbyazbxaxbzaxbyaybz)

3. 旋转矩阵

[e1,e2,e3]定义一个坐标系,该旋转变为[e1,e2,e3]。 则向量 a=(a1a2a3), 在新坐标系内的表示变为 a=(a1a2a3) (注意a并没有经这坐标变换),

则:

[e1,e2,e3](a1a2a3)=[e1,e2,e3](a1a2a3)

则:

(a1 a2 a3)=(e1Te1e1Te2e1Te3e2Te1e2Te2e2Te3e3Te1e3Te2e3Te3)(a1a2a3)=Ra

SO(3)特殊正交群,(Special Othogonal Group), 正交矩阵(行列式为1):

SO(n) = { RRn×n | RRT = I,det(R) = 1 }

\[\{\vec{R} \in R^{n \times n} | \vec{R}\vec{R}^T= \vec{I}, det(\vec{R}) = 1 \}\]

4. 欧氏变换

欧氏变换 = 旋转 + 平移

a=Ra+t

5. 齐次坐标

(a1) = (Rt0T1) (a1) = T(a1)

T属于特殊欧氏群(Special Euclidean Group), SE(n)

SE(3) = T=(Rt0T1)R4×4|RSO(3),tR3

6. 表


变换名称 归类 矩阵形式 自由度 不变性质 备注
欧氏变换 线性变换,刚性变换 (Rt0T1) 6 长度、夹角、体积 旋转+平移 自由度:旋转3, 平移3
相似变换 线性变换 (sRt0T1) 7 体积比 旋转+平移+缩放自由度:旋转3, 平移3, 均匀缩放1
仿射变换(正交投影) 线性变换 (At0T1) 12 平行性,体积比 A只要求可逆,不要求正交自由度:旋转3, 平移3, 缩放1
射影变换 线性变换 (AtaTv) 15 接触平面的相交和相切 自由度:旋转3, 平移3, 缩放1

**7. 图形学中常见变换

符号(Notation) 名字(Name) 特性
T(t) 平移矩阵 Affine
Rx(ρ) 旋转矩阵 线x轴旋转ρ弧度。Orthogonal & Affine
R 旋转矩阵 Orthogonal & Affine
S(s) 缩放矩阵 x, y, z同时均匀缩放s。Affine
Hij(s) 错切矩阵(shear matrix) 使用系统s来相对于分量j错切(推移)分量i,i,jx,y,x
E(h,p,r) 欧拉变换(Euler Transform) yaw, pitch, roll Orthogonal & affine
Po(s) 正交投影(orthogonal projection) Affine
Pp(s) 透视投影(perspection projection) ..
slerp(q^,r^,t) 线性插值变换(slerp transform) 对四元数(^q),(^r)用参数t插值得到的新四元数
符号(Notation) 名字(Name) 特性 表示
T(t) 平移矩阵 Affine (I3t0t1)
Rx(ρ) 旋转矩阵 线x轴旋转ρ弧度。Orthogonal & Affine Rx(ϕ)=(10000cosϕsinϕ00sinϕcosϕ00001) Ry(ϕ)=(cosϕ0sinϕ00100sinϕ0cosϕ00001) Rz(ϕ)=(cosϕsinϕ00sinϕcosϕ0000100001)
R 旋转矩阵 Orthogonal & Affine  
S(s) 缩放矩阵 x, y, z同时均匀缩放s。Affine S(s)=(sx0000sy0000sz00001)
Hij(s) 错切矩阵(shear matrix) 使用系统s来相对于分量j错切(推移)分量i,i,jx,y,x Hxz(s)=(10s0010000100001)
E(h,p,r) 欧拉变换(Euler Transform) yaw, pitch, roll Orthogonal & affine  
Po(s) 正交投影(orthogonal projection) Affine  
Pp(s) 透视投影(perspection projection) ..  
slerp(q^,r^,t) 线性插值变换(slerp transform) 对四元数(^q),(^r)用参数t插值得到的新四元数  
0 comments
Anonymous
Markdown is supported

Be the first person to leave a comment!