Matrix 矩陣
Matrix包含另一個3x3的矩陣,專門用來提供圖形變換配備。提供了如下四種操作translate(平移)?rotate(旋轉)?scale(縮放)?skew(錯切/傾斜)。這四種操作都是對3x3矩陣設值來進行改變。Matrix沒有結構體,必須通過reset()或者set()方法初始化才能夠使用。pre post set三者的區別,pre顧名思義就是最先的,將這個變換插入到隊列最前面,post 則是將這次變換插入到隊列的最后面,set是將隊列清空,然后再插入到隊列當中。
Matrix?
,矩陣中的MSCALE用于處理縮放變換,MSKEW用于處理錯切變換,MTRANS用于處理平移變換,MPERSP用于處理透視變換
除了平移變換之外,其他三種操作都是有圍繞著某個中心點進行的,如果沒有指定則默認是坐標原點。
平移變換(trans):假設點P(x,y),平移到點P1(x1,y1)其中x的偏移量^x,y的偏移量是^y為;用舉證表示:
對應的就是MTRANS_X =^X,MTRANS_Y=^Y
縮放變換(scale):假設點P(x,y),將其x放大a倍,將y放大b倍,變成P1(ax,by);也就是MSCALE_X=a MSCALE_Y=b;其矩陣式:
旋轉變換(ratote):假定有一個點P(x,y),相對坐標原點順時針旋轉a度,同時假定點p距離原點距離r,x = rcos(b),y = rsin(b), (b是點p與原點之間的直線和x軸的夾角) 變換后點P1的坐標則是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);如果用矩陣表示就是: