<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      《Fundamentals of Computer Graphics》第七章 矩陣變換

      開篇

      ??線性代數的機制可以被用來表達排布三維場景中的物體、使用相機觀察物體、在屏幕上看到物體所需要的許多操作。幾何變換Geometric Transformation)例如旋轉、平移、縮放、投影都可以通過與矩陣相乘來得到,變換矩陣Transformation Matrices)就是這章的話題。

      二維線性變換(2D Linear Transformations)

      ??我們可以使用一個\(2 \times 2\)的矩陣來改變或變換一個二維向量

      \[\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} a_{11}x+a_{12}y \\ a_{21}x+a_{22}y \end{bmatrix} \]

      這種簡單的取一個二維向量產生另外一個向量的矩陣乘法,就叫做線性變換Linear Transformation),使用這種簡單的公式可以達到許多不同類型的有用的變換。

      縮放(Scaling)

      ??最基礎的變換就是沿坐標軸縮放Scale),這種變換可以改變模而且有可能改變方向。

      \[\mathrm{scale}(s_x,s_y)=\begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix} \]

      \[\begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} s_xx \\ x_yy \end{bmatrix} \]

      下面是兩個縮放的例子

      \[\mathrm{scale}(0.5,0.5) = \begin{bmatrix} 0.5 & 0 \\ 0 & 0.5 \end{bmatrix} \]

      img

      \[\mathrm{scale}(0.5,1.5) = \begin{bmatrix} 0.5 & 0 \\ 0 & 1.5 \end{bmatrix} \]

      img

      剪切(Shearing)

      ??剪切描述的是把東西推向某邊的那種變換,水平剪切矩陣和豎直剪切矩陣長這樣

      \[\mathrm{shear-x}(s)=\begin{bmatrix} 1 & s \\ 0 & 1 \end{bmatrix},\mathrm{shear-y}(s)=\begin{bmatrix} 1 & 0 \\ s & 1 \end{bmatrix} \]

      下面是兩個剪切的例子

      \[\mathrm{shear-x}(1)=\begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix} \]

      img

      \[\mathrm{shear-y}(1)=\begin{bmatrix} 1 & 0 \\ 1 & 1 \end{bmatrix} \]

      img

      旋轉(Rotation)

      ??假設我們想以一個\(\phi\)角度逆時針旋轉向量\(\mathbf{a}\)到向量\(\mathbf{b}\),我們首先用半徑\(r\)和角度\(\alpha\)來表示向量\(\mathbf{a}\)

      \[x_a=r\cos\alpha \]

      \[y_a=r\sin\alpha \]

      因為\(\mathbf{b}\)是從\(\mathbf{a}\)旋轉得到的,因此可得

      \[x_b=r\cos(\alpha+\phi)=r\cos\alpha\cos\phi-r\sin\alpha\sin\phi \]

      \[y_b=r\sin(\alpha+\phi)=r\sin\alpha\cos\phi+r\cos\alpha\sin\phi \]

      因為\(x_a=r\cos\alpha\)\(y_a=r\sin\alpha\),這實際上等于

      \[x_b=x_a\cos\phi-y_a\sin\phi \]

      \[y_b=y_a\cos\phi+x_a\sin\phi \]

      可以化成矩陣向量相乘形式

      \[\begin{bmatrix} x_b \\ y_b \end{bmatrix} = \begin{bmatrix} \cos\phi & -\sin\phi \\ \sin\phi & \cos\phi \end{bmatrix} \begin{bmatrix} x_a \\ y_a \end{bmatrix} \]

      因此旋轉矩陣為

      \[\mathrm{rotate}(\phi) = \begin{bmatrix} \cos\phi & -\sin\phi \\ \sin\phi & \cos\phi \end{bmatrix} \]

      下面是兩個旋轉的例子

      \[\begin{bmatrix} \cos\frac{\pi}{4} & -\sin\frac{\pi}{4} \\ \sin\frac{\pi}{4} & \cos\frac{\pi}{4} \end{bmatrix} = \begin{bmatrix} 0.707 & -0.707 \\ 0.707 & 0.707 \end{bmatrix} \]

      img

      \[\begin{bmatrix} \cos\frac{-\pi}{6} & -\sin\frac{-\pi}{6} \\ \sin\frac{-\pi}{6} & \cos\frac{-\pi}{6} \end{bmatrix} = \begin{bmatrix} 0.866 & 0.5 \\ -0.5 & 0.866 \end{bmatrix} \]

      img

      反射(Reflection)

      ??我們可以讓向量沿著坐標軸反射,沿\(y\)軸反射和沿\(x\)軸反射的矩陣為

      \[\mathrm{reflect-y}=\begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix},\mathrm{reflect-x}=\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \]

      下面是兩個反射的例子
      img
      img

      要注意的是,疊加這兩種反射等效于旋轉\(\pi\)弧度。

      變換的合成和分解(Composition and Decomposition of Transformations)

      ??對于圖形程序來說施加多個變換是很常見的,例如首先施加縮放\(\mathbf{S}\)接著施加旋轉\(\mathbf{R}\),可以通過兩步做到

      \[\mathbf{v}_2=\mathbf{S}\mathbf{v}_1,\mathbf{v}_3=\mathbf{R}\mathbf{v}_2 \]

      另一個方法是

      \[\mathbf{v}_3 =\mathbf{R}(\mathbf{Sv}_1) \]

      因為矩陣相乘服從結合律我們也可以這么寫

      \[\mathbf{v}_3 = (\mathbf{RS})\mathbf{v}_1 \]

      這樣我們可以得到一個新的矩陣\(\mathbf{M}=\mathbf{RS}\),這個新的矩陣描述的就是先縮放再旋轉的變換。下圖是個相關的例子
      img

      之前提到過矩陣相乘不服從交換律,下圖是個相關的例子
      img

      變換的分解(Decomposition of Transformations)

      ??有時候需要撤銷變換,把變換分成更簡單的片段。例如,讓用戶控制旋轉因子和縮放因子來向其展示變換。但是在內部,變換可能僅僅使用一個矩陣來表達,而這個矩陣已經混合好了旋轉和縮放。其實可以通過先把矩陣拆解成期望的片段,接著調整這些片段,最后再次組裝這些變換得到。
      ??對于對稱矩陣來說有特征值分解,可以把對稱矩陣\(\mathbf{A}\)分解成如下形式

      \[\mathbf{A}=\mathbf{RSR}^\mathrm{T} \]

      式中的\(\mathbf{R}\)為正交矩陣,\(\mathbf{S}\)為對角矩陣。從幾何角度來理解,可以把\(\mathbf{R}\)當作旋轉,把\(\mathbf{S}\)當作縮放,實際上就是把單布變換\(\mathbf{A}\)變成了多步變換\(\mathbf{RSR}^\mathrm{T}\)。令特征向量為\(\mathbf{v}_1\)\(\mathbf{v}_2\),特征值為\(\lambda_1\)\(\lambda_2\)\(\mathbf{RSR}^\mathrm{T}\)代表的多步變換可以被解釋為
      img

      ??對于非對稱矩陣來說有奇異值分解,可以把非對稱矩陣\(\mathbf{A}\)分解成如下形式

      \[\mathbf{A}=\mathbf{USV}^\mathrm{T} \]

      式中的\(\mathbf{U}\)\(\mathbf{V}\)為正交矩陣,\(\mathbf{S}\)為對角矩陣。從幾何的角度來理解,可以把\(\mathbf{U}\)\(\mathbf{V}\)當作旋轉,把\(\mathbf{S}\)當作縮放。令左奇異向量為\(\mathbf{u}_1\)\(\mathbf{u}_2\),右奇異向量為\(\mathbf{v}_1\)\(\mathbf{v_2}\),奇異值為\(\sigma_1\)\(\sigma_2\)\(\mathbf{USV}^\mathrm{T}\)代表的多步變換可以被解釋為
      img
      ??還有一種是用于非0旋轉的Paeth分解,如下所示

      \[\begin{bmatrix} \cos\phi & -\sin\phi \\ \sin\phi & \cos\phi \end{bmatrix} = \begin{bmatrix} 1 & \frac{\cos\phi-1}{\sin\phi} \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 \\ \sin\phi & 1 \end{bmatrix} \begin{bmatrix} 1 & \frac{\cos\phi-1}{\sin\phi} \\ 0 & 1 \end{bmatrix} \]

      以45°旋轉為例可以得到

      \[\mathrm{rotate}(\frac{\pi}{4})=\begin{bmatrix} 1 & 1-\sqrt{2} \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 \\ \frac{\sqrt{2}}{2} & 1 \end{bmatrix} \begin{bmatrix} 1 & 1-\sqrt{2} \\ 0 & 1 \end{bmatrix} \]

      這種特別的變換對光柵旋轉非常有用,因為剪切是對圖像非常有效的光柵操作,它會引入一些鋸齒但是不會留下孔洞。一個關鍵的觀察是,如果取光柵位置\((i,j)\)接著施加水平剪切,我們可以得到

      \[\begin{bmatrix} 1 & s \\ 0 & 1 \end{bmatrix} \begin{bmatrix} i \\ j \end{bmatrix} = \begin{bmatrix} i+sj \\ j \end{bmatrix} \]

      如果把\(sj\)舍入到最近的整數,這個量會讓每一行往側邊移動一點,行與行之間移動的量會相差一定量,但是相同行的每個位置往側邊移動的量是一樣的,因此能讓旋轉后的圖像的內部無孔洞。對于豎直剪切也是一樣的道理,因此我們可以簡單地實現一個光柵旋轉。

      三維線性變換(3D Linear Transformations)

      三維線性變換可以從二維線性變換推廣得到,例如沿軸縮放為

      \[\mathrm{scale}(s_x,s_y,s_z)=\begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & s_z \end{bmatrix} \]

      三維中的旋轉分為繞z、x、y軸旋轉,分別為

      \[\mathrm{rotate-z}(\phi)=\begin{bmatrix} \cos\phi & -\sin\phi & 0 \\ \sin\phi & \cos\phi & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

      \[\mathrm{rotate-x}(\phi)=\begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\phi & -\sin\phi \\ 0 & \sin\phi & \cos\phi \end{bmatrix} \]

      \[\mathrm{rotate-y}(\phi)=\begin{bmatrix} \cos\phi & 0 & \sin\phi \\ 0 & 1 & 0 \\ -\sin\phi & 0 & \cos\phi \end{bmatrix} \]

      在二維中的剪切可以沿著某個軸進行,而在三維中

      \[\mathrm{shear-x}(d_x,d_z)=\begin{bmatrix} 1 & d_x & d_z \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

      和二維變換一樣,三維變換矩陣可以用奇異值分解,從而得到一個旋轉矩陣、一個縮放矩陣、另一個旋轉矩陣。當然了,對稱三維矩陣也可以使用特征值分解,從而得到一個旋轉矩陣、一個縮放矩陣、一個逆旋轉矩陣。此外,一個三維旋轉矩陣也可以分解成三維剪切矩陣的乘積。

      任意三維旋轉(Arbitrary 3D Rotations)

      ??繞任意軸旋轉其實很簡單,可以利用上一章的對矩陣變換向量的不同理解得到。假設我們有一個點\((x,y,z)\)處于全局坐標系中,想讓點\((x,y,z)\)\(\mathbf{w}\)軸旋轉,我們首先得找到另外兩個輔助軸\(\mathbf{u}\)\(\mathbf{v}\),要求是\(\mathbf{u}\)\(\mathbf{v}\)\(\mathbf{w}\)能組成一個標準正交基。有了這個條件后,我們先把點\((x,y,z)\)投影到\(\{\mathbf{u},\mathbf{v},\mathbf{w}\}\)這個坐標系中,于是可以使用這個矩陣

      \[\begin{bmatrix} x_u & y_u & z_u \\ x_v & y_v & z_v \\ x_w & y_w & z_w \end{bmatrix} \]

      接著我們繞\(\{\mathbf{u},\mathbf{v},\mathbf{w}\}\)這個坐標系中的z軸旋轉,于是可以用這個矩陣

      \[\mathrm{rotate-z}(\phi)=\begin{bmatrix} \cos\phi & -\sin\phi & 0 \\ \sin\phi & \cos\phi & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

      最后我們使用\(\mathbf{u}\)\(\mathbf{v}\)\(\mathbf{w}\)這三個基向量,把在這個坐標系中繞z軸旋轉后的坐標變換到全局坐標系中,從而得到點\((x,y,z)\)\(\mathbf{w}\)軸旋轉后的點\((x^{new},y^{new},z^{new})\),因此可以使用這個矩陣

      \[\begin{bmatrix} x_u & x_v & x_w \\ y_u & y_v & y_w \\ z_u & z_v & z_w \end{bmatrix} \]

      綜上,繞軸多步變換為

      \[\begin{bmatrix} x^{new} \\ y^{new} \\ z^{new} \end{bmatrix} = \begin{bmatrix} x_u & x_v & x_w \\ y_u & y_v & y_w \\ z_u & z_v & z_w \end{bmatrix} \begin{bmatrix} \cos\phi & -\sin\phi & 0 \\ \sin\phi & \cos\phi & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x_u & y_u & z_u \\ x_v & y_v & z_v \\ x_w & y_w & z_w \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} \]

      變換法線(Transforming Normal Vectors)

      ??絕大多數三維向量都是用來表示位置或方向的,例如光從哪來。不過有些向量會被用來表示表面法線Surface Normals),當表面被變換時這些法線不能以同樣方式被變換。假設表面會被矩陣\(\mathbf{M}\)變換,表面的切向向量\(\mathbf{t}\)\(\mathbf{M}\)變換后會保持與表面相切。然而表面法線\(\mathbf{n}\)\(\mathbf{M}\)變換后可能不會與表面垂直。因此我們得以\(\mathbf{M}\)為基礎,得到用于變換法線的矩陣\(\mathbf{N}\)。因為表面的切向向量與表面法線總是垂直的,因此可以得到

      \[\begin{align*} \mathbf{n}^\mathrm{T}\mathbf{t}&=0 \\ \mathbf{n}^\mathrm{T}\mathbf{I}\mathbf{t}&=0 \\ \mathbf{n}^\mathrm{T}\mathbf{M}^{-1}\mathbf{M}\mathbf{t}&=0 \end{align*} \]

      這兩個向量被分別變換后也會保持垂直,因此

      \[\begin{align*} (\mathbf{Nn})^\mathrm{T}\mathbf{Mt}&=0 \\ \mathbf{n}^\mathrm{T}\mathbf{N}^\mathrm{T}\mathbf{Mt}&=0 \end{align*} \]

      \(\mathbf{n}^\mathrm{T}\mathbf{M}^{-1}\mathbf{M}\mathbf{t}=0\)\(\mathbf{n}^\mathrm{T}\mathbf{N}^\mathrm{T}\mathbf{Mt}=0\)可以得到\(\mathbf{N}^\mathrm{T}=\mathbf{M}^{-1}\),所以

      \[\mathbf{N}=(\mathbf{M}^{-1})^\mathrm{T}或\mathbf{N}=(\mathbf{M}^\mathrm{T})^{-1} \]

      平移和仿射變換(Translation and Affine Transformations)

      之前已經探討過了使用矩陣來進行縮放、旋轉、剪切等變換,在二維中變換為

      \[\begin{bmatrix} x^{\prime} \\ y^{\prime} \end{bmatrix} = \begin{bmatrix} m_{11} & m_{12} \\ m_{21} & m_{22} \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]

      這種變換有個缺點,就是不能移動物體,只能進行縮放、旋轉等變換。為了讓物體平移Translate),我們必須實現這樣一種變換

      \[\begin{align*} x^{\prime} &= x + x_t \\ y^{\prime} &= y + y_t \end{align*} \]

      結果很簡單,我們為表示位置的點\((x,y)\)增加一個坐標到\((x,y,1)\)接著與下面這種\(3 \times 3\)的矩陣相乘

      \[\begin{bmatrix} m_{11} & m_{12} & x_t \\ m_{21} & m_{22} & y_t \\ 0 & 0 & 1 \end{bmatrix} \]

      相乘的結果為

      \[\begin{bmatrix} x^{\prime} \\ y^{\prime} \\ 1 \end{bmatrix} = \begin{bmatrix} m_{11} & m_{12} & x_t \\ m_{21} & m_{22} & y_t \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} \equiv \begin{bmatrix} m_{11}x+m_{12}y+x_t \\ m_{21}x+m_{22}y+y_t \\ 1 \end{bmatrix} \]

      這一個矩陣就實現了一次線性變換加上一次平移變換,這種類型的變換叫做仿射變換Affine Transformation),為實現仿射變換而增加的那一個維度的坐標叫做齊次坐標Homogeneous Coordinate)。
      ??要注意的是,這種變換會帶來一個問題,使表示方向的向量平移是明顯不合理的,可以把齊次坐標置零解決這個問題

      \[\begin{bmatrix} 1 & 0 & x_t \\ 0 & 1 & y_t \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 0 \end{bmatrix} \]

      在之后的章節,我們會實現透視視圖,到那個時候會了解齊次坐標的其它用途。特別地來說,齊次坐標是在圖形硬件中實現的渲染器的設計和操作的基石。在三維中的平移和二維中的差不多,增加一個第四坐標即可,因此平移變換為

      \[\begin{bmatrix} 1 & 0 & 0 & x_t \\ 0 & 1 & 0 & y_t \\ 0 & 0 & 1 & z_t \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} = \begin{bmatrix} x+x_t \\ y+y_t \\ z+z_t \\ 1 \end{bmatrix} \]

      這里要再次注意把表示方向的向量的齊次坐標置零。

      逆變換矩陣(Inverses of Transformation Matrices)

      ??有時我們可能想進行逆變換,例如對于縮放\(\mathrm{scale}(s_x,s_y,s_z)\)的逆縮放就是\(\mathrm{scale}(1/s_x,1/s_y,1/s_z)\),旋轉的逆就是反方向旋轉,平移的逆就是反方向平移。如果我們有一些矩陣\(\mathbf{M}=\mathbf{M}_1\mathbf{M}_2\cdots\mathbf{M}_n\),它的逆變換就是\(\mathbf{M}^{-1}=\mathbf{M}^{-1}_n\cdots\mathbf{M}^{-1}_2\mathbf{M}^{-1}_1\)
      ??當然了,我們也可以用奇異值分解來求逆變換,對于上面的矩陣\(\mathbf{M}\)

      \[\mathbf{M}=\mathbf{R}_1\mathrm{scale}(\sigma_1,\sigma_2,\sigma_3)\mathbf{R}_2 \]

      因此它的逆變換\(\mathbf{M}^{-1}\)

      \[\mathbf{M}^{-1}=\mathbf{R}^{\mathrm{T}}_2\mathrm{scale}(1/\sigma_1,1/\sigma_2,1/\sigma_3)\mathbf{R}^{\mathrm{T}}_1 \]

      坐標變換(Coordinate Transformations)

      ??之前的所有討論都是使用矩陣來變換一些點,不過這還隱藏著其它含義,其實我們也可以把它們看成是在改變坐標系統。例如坐在行進的車中觀察,這個時候會發現車之外的物體都在相對你往后移動,從計算機和變換的角度來理解,就是每幀都有變換矩陣作用于物體來讓其往后移動。從另一個方面來說,感受到相對移動實際上是以你的視角為參考的結果。這個時候就發現了變換矩陣和改變坐標系統實際上是息息相關的。
      ??從幾何上說,一個坐標系統或坐標幀是由原點和基構成的,標準正交基是最常用的一種。在一幀中,坐標系統的原點和基分別為\(\mathbf{p}\)\(\{\mathbf{u},\mathbf{v},\mathbf{w}\}\),我們可以用在這個坐標系中的一點\((u,v,w)\)得到另外一點

      \[\mathbf{p}+u\mathbf{u}+v\mathbf{v}+w\mathbf{w} \]

      在計算機中存儲這些向量時,會發現這些向量實際上是在某個坐標系統中表達的,例如坐標系原點\(\mathbf{p}\)實際上是位于某個坐標系統中的。為了讓這一切進行下去,我們需要指定規范坐標系統,通常叫“全局”或“世界”坐標系統,這種系統會被用來描述其它所有系統。
      ??在二維中,規范坐標系統通常用點\(\mathbf{o}\)表示原點,用\(\mathbf{x}\)\(\mathbf{y}\)來表示右手標準正交基向量。其它的坐標系統可能用\(\mathbf{e}\)來表示原點,用\(\mathbf{u}\)\(\mathbf{v}\)來表示右手標準正交基向量。一般來說,用于描述規范坐標系統的數據是不需要被顯式存儲的,因為它們是其它所有坐標系統的參考。使用規范坐標系中的坐標\((x_p,y_p)\)可以得到它在世界空間中的坐標為

      \[\mathbf{p}=(x_p,y_p)\equiv\mathbf{o}+x_p\mathbf{x}+y_p\mathbf{y} \]

      使用某個坐標系中的坐標\((u_p,v_p)\)可以得到它在規范坐標系中的坐標為

      \[\mathbf{p}=(u_p,v_p)\equiv\mathbf{e}+u_p\mathbf{u}+v_p\mathbf{v} \]

      因此,某個坐標系中的坐標\((u_p,v_p)\)和它在規范坐標系中的坐標\((x_p,y_p)\)的關系為

      \[\begin{bmatrix} x_p \\ y_p \\ 1 \end{bmatrix} = \begin{bmatrix} x_u & x_v & x_e \\ y_u & y_v & y_e \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} u_p \\ v_p \\ 1 \end{bmatrix} \]

      讓它變簡潔點可以化簡成

      \[\mathbf{p}_{xy}=\begin{bmatrix} \mathbf{u} & \mathbf{v} & \mathbf{e} \\ 0 & 0 & 1 \end{bmatrix} \mathbf{p}_{uv} \]

      我們稱等式右側的矩陣為幀到規范Frame-To-Canonical)矩陣,它把在某個坐標系下的坐標轉化為在規范坐標系下的坐標。從另一個方向變換,我們可以得到

      \[\begin{bmatrix} u_p \\ v_p \\ 1 \end{bmatrix} = \begin{bmatrix} x_u & y_u & 0 \\ x_v & y_v & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & -x_e \\ 0 & 1 & -y_e \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x_p \\ y_p \\1 \end{bmatrix} \]

      讓它變簡潔點可以化簡成

      \[\mathbf{p}_{uv}=\begin{bmatrix} \mathbf{u} & \mathbf{v} & \mathbf{e} \\ 0 & 0 & 1 \end{bmatrix}^{-1} \mathbf{p}_{xy} \]

      我們稱等式右側的矩陣為規范到幀Canonical-To-Frame)矩陣,它把在規范坐標系下的坐標轉化為在某個坐標系下的坐標。因此在三維中我們有

      \[\begin{align*} \begin{bmatrix} x_p \\ y_p \\ z_p \\ 1 \end{bmatrix}&=\begin{bmatrix} 1 & 0 & 0 & x_e \\ 0 & 1 & 0 & y_e \\ 0 & 0 & 1 & z_e \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x_u & x_v & x_w & 0 \\ y_u & y_v & y_w & 0 \\ z_u & z_v & z_w & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} u_p \\ v_p \\ w_p \\1 \end{bmatrix} \\ \mathbf{p}_{xyz} &= \begin{bmatrix} \mathbf{u} & \mathbf{v} & \mathbf{w} & \mathbf{e} \\ 0 & 0 & 0 & 1 \end{bmatrix} \mathbf{p}_{uvw} \end{align*} \]

      \[\begin{align*} \begin{bmatrix} u_p \\ v_p \\ w_p \\ 1 \end{bmatrix} &= \begin{bmatrix} x_u & y_u & z_u & 0 \\ x_v & y_v & z_v & 0 \\ x_w & y_w & z_w & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & -x_e \\ 0 & 1 & 0 & -y_e \\ 0 & 0 & 1 & -z_e \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x_p \\ y_p \\ z_p \\ 1 \end{bmatrix} \\ \mathbf{p}_{uvw} &= \begin{bmatrix} \mathbf{u} & \mathbf{v} & \mathbf{w} & \mathbf{e} \\ 0 & 0 & 0 & 1 \end{bmatrix}^{-1} \mathbf{p}_{xyz} \end{align*} \]

      posted @ 2025-06-05 00:15  TiredInkRaven  閱讀(50)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美性猛交xxxx免费看| 成人综合婷婷国产精品久久蜜臀| 丰满少妇又爽又紧又丰满在线观看| 无码中文av波多野结衣一区| 国产WW久久久久久久久久| 竹菊影视欧美日韩一区二区三区四区五区 | 午夜国产精品福利一二| 无码一区二区三区av在线播放 | 成人精品一区二区三区四| 东京热人妻无码一区二区av| 4hu亚洲人成人无码网www电影首页 | 亚洲欧洲∨国产一区二区三区| 亚洲一区二区偷拍精品| 亚洲中文字幕无码久久精品1| 国产卡一卡二卡三免费入口| 亚洲va久久久噜噜噜久久狠狠| 亚洲色大成网站www永久男同| 起碰免费公开97在线视频| 亚洲国产成人久久综合三区| 爱性久久久久久久久| 久久美女夜夜骚骚免费视频| 韩国青草无码自慰直播专区| 平泉县| 韩国三级+mp4| 一区二区三区av在线观看| 性男女做视频观看网站| 亚洲av午夜福利大精品| 青青青视频免费一区二区| 国产美女69视频免费观看| 精品人妻伦一二二区久久| 色8久久人人97超碰香蕉987| a级免费视频| 人妻中文字幕精品系列| 国产日韩一区二区三区在线观看| 亚洲中文字幕在线二页| 午夜免费福利小电影| 日韩中文字幕亚洲精品| 99国产精品白浆无码流出| 在线天堂新版资源www在线下载| 国产一区二区不卡自拍| 毛片网站在线观看|