Draw(4)

Matrix 矩陣

Matrix包含另一個(gè)3x3的矩陣,專門用來提供圖形變換配備。提供了如下四種操作translate(平移)?rotate(旋轉(zhuǎn))?scale(縮放)?skew(錯(cuò)切/傾斜)。這四種操作都是對3x3矩陣設(shè)值來進(jìn)行改變。Matrix沒有結(jié)構(gòu)體,必須通過reset()或者set()方法初始化才能夠使用。pre post set三者的區(qū)別,pre顧名思義就是最先的,將這個(gè)變換插入到隊(duì)列最前面,post 則是將這次變換插入到隊(duì)列的最后面,set是將隊(duì)列清空,然后再插入到隊(duì)列當(dāng)中。

Matrix?


,矩陣中的MSCALE用于處理縮放變換,MSKEW用于處理錯(cuò)切變換,MTRANS用于處理平移變換,MPERSP用于處理透視變換

除了平移變換之外,其他三種操作都是有圍繞著某個(gè)中心點(diǎn)進(jìn)行的,如果沒有指定則默認(rèn)是坐標(biāo)原點(diǎn)。

平移變換(trans):假設(shè)點(diǎn)P(x,y),平移到點(diǎn)P1(x1,y1)其中x的偏移量^x,y的偏移量是^y為;用舉證表示:

對應(yīng)的就是MTRANS_X =^X,MTRANS_Y=^Y

縮放變換(scale):假設(shè)點(diǎn)P(x,y),將其x放大a倍,將y放大b倍,變成P1(ax,by);也就是MSCALE_X=a MSCALE_Y=b;其矩陣式:

旋轉(zhuǎn)變換(ratote):假定有一個(gè)點(diǎn)P(x,y),相對坐標(biāo)原點(diǎn)順時(shí)針旋轉(zhuǎn)a度,同時(shí)假定點(diǎn)p距離原點(diǎn)距離r,x = rcos(b),y = rsin(b), (b是點(diǎn)p與原點(diǎn)之間的直線和x軸的夾角) 變換后點(diǎn)P1的坐標(biāo)則是x = rcos(a+b),y= rsin(a+b),處理后x= rcos(a)cos(b) - rsin(b)sin(a)=xcos(b) -ysin(b) y=rsin(a)cos(b) + rsin(b)cos(a) =xsin(a) + ycos(a);如果用矩陣表示就是:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容