二維動畫怎么進行轉換形狀?
實驗三二維圖形變換
一、實驗任務
1. 通過二維幾何變換的數學模型,編寫縮放、旋轉、對稱變換; 2. 實現圖形變換的交互式操作:縮放、旋轉、對稱變換等;
二、實驗內容
1. 放大縮小變換
放大縮小變換公式為:x ’=x..Sx , y ’=y.Sy ; 其中S x ,S y 分別為x,y 方向的放縮比例系數。
變換矩陣表達式為: [x’ y ’
(1)S x =Sy =1.5;等比例放大 (2)S x =Sy =0.5;等比例縮小 2. 對稱變換
包括以x 軸對稱、y 軸對稱和原點O 對稱三種。由于屏幕坐標只有第一象限,我們可以將原點平移到(500,240)處。在第一象限畫出一個三角形,然后分別求出三個對稱圖形。 3. 旋轉變換
將圖形上的點(x ,y )旋轉θ角度,得到新的坐標(x’,y ’
) 為: x ’=xcosθ-ysin θ, y ’=xsinθ+ycosθ;
[x’ y ’ 4.
三、設計思路
1. 通過二維幾何變換的數學模型,編寫縮放、旋轉、對稱變換;
2. 以(500,240)為原點建立圖形變換的參考坐標系; 3. 通過鍵盤按鍵控制圖形的縮放、旋轉、對稱變換;
4. 變換圖形設定為以Pt[0](540,220) 、Pt[1](670,130) 、Pt[2](560,120) 為頂點的
三角形。
步驟:
1. 2.
建立Trans 工程文件;
利用Resource View設計菜單,如圖所示;
3.
在CTransView 視圖類中添加消息映射函數;
4. 添加自定義的成員變量:
CPoint Pt[3];//三角形定點數組 float dAngle;//每一次旋轉的角度
在視圖類CPP 文件的構造函數中初始化成員變量
Pt[0].x = 540; Pt[0].y = 220; Pt[1].x = 670; Pt[1].y = 130; Pt[2].x = 560; Pt[2].y = 120; dAngle = 0;
5. 在視圖類的OnDraw()函數中加入下列代碼,實現視圖繪圖。
void CTransView::OnDraw(CDC* pDC) {
CTransDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
// TODO: add dra