青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

concentrate on c/c++ related technology

plan,refactor,daily-build, self-discipline,

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  37 Posts :: 1 Stories :: 12 Comments :: 0 Trackbacks

常用鏈接

留言簿(9)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

基本變換

平移變換
平移矩陣= (1 0 0 0   )
          (0 1 0 0   )
          (0 0 1 0   )
          (tx ty tz 1)
點p(px,py,pz,1)與平移矩陣相乘以后,就可以得到新點p' = (px+tx,py+ty,pz+tz,1),在計算機實時圖形學上面的平移矩陣好象是錯誤的呀,要轉置以后才對的。
在書中記錄的平移是:
(1 0 0 tx)
(0 1 0 ty)
(0 0 1 tz)
(0 0 0 1 )
另外平移矩陣的逆矩陣應該是:
(1 0 0 -tx)
(0 1 0 -ty)
(0 0 1 -tz)
(0 0 0  1 )
這里采用代數行列式的形式計算出來的,具體來說,就是將平移矩陣轉置,獲得轉置矩陣pt(t),那么p-1(t) = pt(-t).
在D3D里面一般用函數D3DXMatrixTranslation.

旋轉變換

繞x軸旋轉
(1 0 0 0 )
(0 cosA -sinA 0)
(0 sinA cosA 0)
(0 0 0 1)
假設存在某個點p(px,py,pz,1),那么經過繞x旋轉以后,就可以得到
(px,pycosA + pzsinA, pzcosA-pysinA,1)
在D3D里面一般用函數D3DXMatrixRotationX

繞y軸旋轉
(cosA 0 sinA 0)
(0 1 0 0 )
(-sinA 0 cosA 0)
(0 0 0 1)
假設存在某個點p(px,py,pz,1),那么經過繞y旋轉以后,就可以得到
(pxcosA-pzsinA,py,pxsinA+pzcosA,1)
在D3D里面一般用函數D3DXMatrixRotationY

繞z軸旋轉
(cosA -sinA 0 0)
(sinA cosA 0 0)
(0 0 1 0)
(0 0 0 1)
假設存在某個點p(px,py,pz,1),那么經過z旋轉以后,就可以得到
(pxcosA + pysinA, pycosA - pxsinA, pz, 1) 
在D3D里面一般用函數D3DXMatrixRotationZ

當然還有一個可以自定義的旋轉軸做法:
D3DXMatrixRotationAxis

對繞任意旋轉角度A的3x3旋轉矩陣RL來說,其對角線元素之和是一個與坐標軸無關的常量,稱為跡
tr(R) = 1 + 2cosA

縮放變換
縮放矩陣
s = (sx 0 0 0)
    (0  sy 0 0)
    (0  0 sz 0)
    (0  0  0  1)
假設存在某個點p(px,py,pz,1),那么經過縮放變換以后,就可以得到
(pxsx,pyxy,pzsz,1)
在齊次坐標系里面,創建一個一致性縮放矩陣的另外一種方式是通過改變(3,3)處的元素實現
比如
s = (1 0 0 0)
    (0 1 0 0)
    (0 0 1 1)
    (0 0 0 factor)
在這里這個factor將起主要作用.
如果對縮放矩陣的一個或者三個分量置為空,就會產生一個反射矩陣,或者成為鏡像矩陣。如果其中兩個縮放因子是-1,那么將會旋轉180度

錯切變換
錯切變換是使圖形產生一個扭變。分為x和y方向的錯切變換。

    圖形沿x方向的錯切矩陣表示為 

     [1 0 0]
[x' y' 1] = [x y 1][b 1 0] = [ x+by y 1]
                   [0 0 1]

    此時,圖形的y坐標不變,x坐標隨坐標(x y)和系數b作線性變化。b>0,圖形沿+x方向做錯切;b<0,圖形沿-x方向做錯切;b≠0。

    圖形沿y方向的錯切矩陣表示為     

     [1 d 0]
[x' y' 1] = [x y 1][1 1 0] = [ x dx+y 1]
                   [0 0 1] 

   此時,圖形的x坐標不變,y坐標隨坐標(x y)和系數d作線性變化。d>0,圖形沿+y方向做錯切;d<0,圖形沿-y方向做錯切;d≠0。 
一般在游戲中被用來扭曲整個場景,從而產生某種虛幻效果,或者抖動來產生模糊反射效果。
Hxy:第一下標是由錯切矩陣改變的坐標,第二個下標表示要進行錯切操作的坐標。

          (1 0 s 0)
Hxz(s) =  (0 1 0 0)
          (0 0 1 0)
          (0 0 0 1)
假設存在P點(px,py,pz,1)與矩陣相乘可以得到(px + s pz, py, pz,1)
任何錯切矩陣的行列式值總為1。

變換級聯
矩陣乘法存在不可交換性,將多個矩陣級聯為單個矩陣可以獲得比較好的效率。

剛體變換
僅由平移和旋轉兩種級聯所做成的變換稱為剛體變換,這種變換具有長度和角度不變的特性。
可以將剛體矩陣X寫成一個平移矩陣T(t)和一個旋轉矩陣R的級聯。
            ( r00 r01 r02 tx)
            ( r10 r11 r12 ty)
X = T(t)R = ( r20 r21 r22 tz)
            ( 0   0   0   1)
X的逆矩陣 = (T(t)R)的逆矩陣 = R的逆矩陣*T(t)的逆矩陣 = R的逆矩陣 * T(-t)
首先對矩陣R左上角的3x3矩陣進行轉置,然后改變平移矩陣T的平移值符號,最后將這兩個矩陣進行相乘即可以得到相應的逆矩陣。
另外一種求X的逆矩陣方法:
                      (r,0轉置)
R = ( r,0 r,1 r,2) = (r,1轉置)
                      (r,2轉置)

X = ( R     t)
    ( 0轉置 1)

法線變換
法線必須通過用變換集合圖形的逆矩陣的轉置矩陣進行變換。
在實際應用中,如果變換矩陣是正交的,就沒有必要計算該矩陣的逆矩陣
在這種情況下,正交矩陣的逆矩陣就是轉置矩陣,可以用這個矩陣本身對法線進行變換。

如果使用一個或者多個一致性縮放矩陣進行變換,就不需要計算相應的逆矩陣,因為這個縮放只影響變換后的法線長度,而不影響其方向,在這種情況下,一般都要在矩陣變換對法線進行變化之后,需要對法線進行歸一化。

逆矩陣計算
1) 如果矩陣是單個變換或者一些給定參數的變換,那么很容易通過調換參數和矩陣順序計算出相應的逆矩陣,比如M = T(t)R(s), 那么M的逆矩陣為R(-s)T(-t)
2) 如果矩陣是正交,那么其逆矩陣就是其轉置,任何的旋轉變換都是正交的。
3) 在不知道任何特殊信息的情形下,可以采用伴隨矩陣,克萊姆法則,LU分解,或者高斯消去法來計算逆矩陣


歐拉變換
主要用來構造一個自定位(如相機)或者任何實體處于特定方向的矩陣。
首先,需要建立一種默認的觀察方向,通常情況下,頭部沿著y軸方向,面部朝向為z軸負方向。
當使用歐拉變換的時候,會出現所謂萬向鎖(Gimbal Lock),這種現象通常出現在旋轉變換的時候出現,其中會缺少一個自由度。

改變head就是使觀察者搖頭說不,改變pitch就是點頭,改變roll就是頭向一邊歪。

矩陣分解
主要應用場合:
1)提取縮放因子
2)確定特定系統所需要的變換
3)確定模型是否只經歷過剛體變換
4)在動畫的關鍵幀之間插值
5)從旋轉矩陣中消除其中的錯切變換

四元組
四元數是一個用來構造強制變換的有力工具,在某些情況下,要比歐拉角和歐拉矩陣更具有優勢,特別是在遇到旋轉和定向的情況時更是如此。
數學背景
q = (qv,qw) = iqx + jqy + kqz + qw = qv + qw
qv = iqx + jqy + kqz = (qx,qy,qz)
i*i = j*j = k*k = -1, jk = -kj = i, ki = -ik = j, ij = -ji = k
乘法:
QR = (iqx + jqy + kqz + qw)(irx + jry + krz + rw)
   = i*(qyrz - qzry + rwqz + qwrx)
     + j*(qzrx - qxrz + rwqy + qwry)
     + k*(qxry - qyrx + rwqz + qwrz)
     + qwrw - qxrx - qyry - qzrz
   = qv * rv + rwqw - qxrx - qyry - qzrz

加法:
Q + R = (qv, qw) +(rv,rw) = (qv + rv, qw + rw)

共厄:
Q = (qv,qw)共厄 = (-qv,qw)

范數:
n(Q) = qx * qx + qy * qy + qz * qz + qw * qw

同一性:
i = (0,1)

逆:
q的逆 = 1/n(Q) *Q共厄

共軛法則:

Q共軛 = Q共軛

( Q + R)共軛 = Q共軛 + R共軛

(QR)共軛 = R共軛Q共軛

范數法則:
n(Q共厄) = n(Q)

n(QR) = n(Q)n(R)

乘法定律:
  線性關系: P(sQ + tR) = sPQ + tPR
             (sP +tQ)R = sPR + tQR
  組合關系:P(QR) = (PQ)R

單位四元組Q=(qv,qw)的模n(Q)為1,基于此,Q可以表示為:
Q = (sinAuq,cosA) = sinAuq + cosA

對于一些三維向量uq來說,有||uq|| = 1,因為:
n(Q) = n(sinAuq,cosA) = sinA*sinA*(uq.uq) + cosA*cosA = 1
當且僅當uq*uq = ||uq|| *||uq||.

球面線性插值
球面線性插值是在給定兩個單位四元組Q和R,以及一個參數t(0<=t<=1)的情況下計算插值四元組,
該運算的代數形式可以用下面的復合四元組S表示:
S(Q,R,t) = (RQ的逆)tQ

slerp表示球面線性插值
slerp(Q,R,t) = sinA(1-t)/sinA*Q + sinAt/sinA *R
cosA = qxrx + qyry + qzrz + qwrw
對于0<=t<=1來說,slerp函數計算是唯一的插值四元組
這些四元組構成了四維單位球面上從Q(t=0)到R(t=1)之間的最短弧。
這條弧位于一個圓上,這個圓由Q,R,以及原點組成的平面與四維單位球面相交形成的

Ai = Bi = Qi exp(-(log(QiQi-1)+log(QiQi+1))/4)

使用Qi,Ai和Bi對使用平滑三次樣條的四元組進行球面插值
squad(Qi,Qi+1,Ai,Ai+1,t) = slerp(slerp(Qi,Qi+1,t),slerp(Ai,Ai+1,t),2t(1-t))

squad函數是由slerp函數重復使用球面插值而構成的,該插值通過初始化方位Qi而不是Ai,Ai主要用來表示初始方位的切線方向。

從一個向量到另外一個向量的旋轉
四元組計算規則:
首先對s和t歸一化,然后,計算出單位旋轉軸u,具體通過式u = (s*t)/||s x t||來計算。
其次e = s.t = cos2A,||s * t|| = sin2A
其中2A表示s與t之間的夾角.
這樣,從s到t旋轉的四元組可以表示為Q =(sinAu,cosA).

posted on 2008-05-25 15:58 jolley 閱讀(1895) 評論(1)  編輯 收藏 引用

Feedback

# re: 實時計算機圖形學--圖形變換 2012-04-09 19:23 Code Knight
一般書上采用的是OGL的列矩陣書寫方式.  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品久久久久婷婷老年 | 欧美一区二区视频免费观看| 欧美午夜一区| 欧美日韩国产一中文字不卡| 欧美精品在线视频| 欧美深夜福利| 国产精品影院在线观看| 国产视频精品va久久久久久| 伊人精品在线| 99av国产精品欲麻豆| 一区二区三区回区在观看免费视频| av不卡免费看| 欧美在线视频免费| 免费中文字幕日韩欧美| 亚洲精品国产视频| 亚洲欧美精品伊人久久| 欧美成人精品一区| 国产精品久久久久91| 国产在线视频欧美| 艳妇臀荡乳欲伦亚洲一区| 欧美在线网站| 亚洲精品你懂的| 亚洲美女少妇无套啪啪呻吟| 午夜精品一区二区三区电影天堂| 鲁鲁狠狠狠7777一区二区| 国产精品v日韩精品| 在线精品亚洲一区二区| 午夜激情综合网| 欧美69wwwcom| 午夜天堂精品久久久久| 欧美人在线视频| 尤物yw午夜国产精品视频| 亚洲淫性视频| 亚洲国产日韩欧美| 久久精品一区二区国产| 久久久久久久999精品视频| 91久久国产自产拍夜夜嗨 | 性色av香蕉一区二区| 你懂的一区二区| 国产亚洲亚洲| 西西人体一区二区| 亚洲伦理在线观看| 欧美sm重口味系列视频在线观看| 国产视频久久久久| 亚洲一区免费看| 亚洲理伦电影| 免费在线看一区| 国产小视频国产精品| 欧美一区成人| 亚洲欧洲99久久| 国产欧美精品在线观看| 性欧美1819性猛交| 亚洲免费在线观看视频| 国产精品私房写真福利视频| 亚洲尤物在线| 亚洲综合电影| 国产亚洲欧美一区二区| 久久久久一本一区二区青青蜜月| 午夜精品国产| 国产精品毛片a∨一区二区三区|国| 亚洲色图自拍| a91a精品视频在线观看| 欧美日韩国产综合视频在线观看中文| 亚洲精品一区二区在线观看| 亚洲国产精品ⅴa在线观看| 欧美激情网站在线观看| 中国女人久久久| 亚洲一区二区三区免费在线观看| 国产精品国产三级国产aⅴ入口| 中文一区二区在线观看| 国产精品99久久久久久久女警| 国产精品国产自产拍高清av| 国产精品99久久久久久久久| 亚洲精品日韩精品| 国产精品家庭影院| 欧美一级免费视频| 久久国产精品免费一区| 亚洲电影在线| 亚洲人成在线观看网站高清| 国产精品va在线| 久久久一二三| 久久综合给合| 亚洲特黄一级片| 性色av一区二区三区红粉影视| 亚洲二区免费| 一区二区三区视频在线播放| 韩国欧美一区| 亚洲精品偷拍| 国产一区二区三区精品久久久| 美女爽到呻吟久久久久| 欧美激情一二区| 欧美在线视频不卡| 欧美激情在线有限公司| 欧美有码在线视频| 麻豆成人在线| 亚洲欧美久久久久一区二区三区| 免费看亚洲片| 欧美国产日韩一区二区三区| 中文无字幕一区二区三区| 欧美亚洲专区| 亚洲视频1区| 美女图片一区二区| 欧美一区二区三区四区视频 | 久热精品视频在线观看一区| 欧美精品粉嫩高潮一区二区 | 久久久久综合| 欧美日韩伦理在线| 久久综合影视| 国产精品成人播放| 亚洲大片在线| 黄色成人在线| 亚洲欧美日韩区| 中文国产一区| 欧美激情在线狂野欧美精品| 裸体一区二区三区| 国产欧美一区二区精品忘忧草| 亚洲精品久久| 91久久久久久| 卡通动漫国产精品| 久久久精品五月天| 国产精品高潮呻吟视频| 亚洲免费av网站| 亚洲裸体俱乐部裸体舞表演av| 久久九九久久九九| 久久久久成人精品免费播放动漫| 国产精品男女猛烈高潮激情| 亚洲精品视频在线| 亚洲伦伦在线| 欧美激情一区二区| 91久久精品国产| 亚洲精品乱码久久久久久蜜桃91 | 亚洲激情欧美| 久久久久久久久久久久久女国产乱| 香蕉久久夜色| 国产精品日本欧美一区二区三区| 一区二区三区产品免费精品久久75 | 亚洲网站在线观看| 欧美日韩999| 99视频一区二区三区| 亚洲亚洲精品在线观看| 欧美日韩精品二区第二页| 亚洲另类一区二区| 亚洲一区二区精品在线| 欧美日韩在线播放| 日韩写真在线| 亚洲综合色视频| 国产精品久久中文| 午夜久久黄色| 麻豆成人91精品二区三区| 曰韩精品一区二区| 国产亚洲第一区| 欧美专区日韩视频| 国产日韩在线看片| 久久午夜av| 亚洲麻豆视频| 欧美一区二区精品久久911| 国产主播一区二区| 欧美超级免费视 在线| aa级大片欧美| 欧美一级淫片播放口| 在线免费高清一区二区三区| 免费亚洲视频| 亚洲一区二三| 欧美成人一品| 亚洲在线播放| 影音先锋亚洲精品| 欧美四级在线| 久久精品国产免费| 日韩一区二区精品视频| 久久久久久久一区| 亚洲午夜高清视频| 在线精品一区| 国产精品夜夜夜| 欧美国产一区在线| 亚洲欧美卡通另类91av| 亚洲第一中文字幕| 午夜精品久久久久影视| 亚洲国产高清自拍| 国产精品日韩欧美综合| 免费看精品久久片| 亚洲欧美在线一区| 亚洲美女精品久久| 免费日韩av电影| 性久久久久久久久久久久| 亚洲精品中文字幕女同| 激情欧美日韩一区| 国产伦精品一区二区三区四区免费 | 一区二区三区不卡视频在线观看 | 欧美在线视频免费| 亚洲精品日韩在线| 久久一区二区三区四区| 亚洲欧美国产不卡| 亚洲精品乱码| 亚洲大胆人体视频| 国产精品女人毛片| 欧美人妖另类| 欧美日本国产精品| 欧美国产精品中文字幕| 久久另类ts人妖一区二区| 午夜国产精品视频|