實(shí)驗(yàn)五、二維圖形的幾何變換

一.作業(yè)名稱:二維圖形的幾何變換

二.算法分析

以下實(shí)現(xiàn)了二維圖形的空間平移、比例縮放、旋轉(zhuǎn)、對(duì)稱、轉(zhuǎn)位。

平移變換
| | [

image.png

旋轉(zhuǎn)變換

image.png

放縮變換

image.png

l 平移變換只改變圖形的位置,不改變圖形的大小。

l 旋轉(zhuǎn)變換不改變圖形的形狀

l 放縮變換引起圖形形狀的變化。

復(fù)合變換

的結(jié)果與變換的順序有關(guān)(矩陣乘法不可交換)

三.算法實(shí)現(xiàn)

1.平移變換

void CMyView::OnTranslation()

{

// TODO: Add your command handler code here

int i,j;

CMyClass my1; //構(gòu)造新的CMyClass對(duì)象

//將圖形變換矩陣清零

for ( i=1;i<=3;++i)

{

for ( j=1;j<=3;++j)

my1.A[i][j]=0;

}

//給圖形變換矩陣賦值

my1.A[1][1]=1;

my1.A[2][2]=1;

my1.A[3][1]=15;

my1.A[3][2]=45;

my1.A[3][3]=1;

RedrawWindow();

my1. Display ();

}

2.旋轉(zhuǎn)變換

void CMyView::OnRotation()

{

// TODO: Add your command handler code here

int i,j;

CMyClass my1; //構(gòu)造新的CMyClass對(duì)象

//將圖形變換矩陣清零

for ( i=1;i<=3;++i)

{

for ( j=1;j<=3;++j)

my1.A[i][j]=0;

}

//給圖形變換矩陣賦值

my1.A[1][1]=cos(PI*60);//旋轉(zhuǎn)60度

my1.A[1][2]=sin(PI*60);

my1.A[2][1]=-sin(PI*60);

my1.A[2][2]=cos(PI*60);

my1.A[3][3]=1;

RedrawWindow();

my1. Display ();

}

3.縮放變換

void CMyView::OnScaling()

{

// TODO: Add your command handler code here

int i,j;

CMyClass my1; //構(gòu)造新的CMyClass對(duì)象

//將圖形變換矩陣清零

for ( i=1;i<=3;++i)

{

for ( j=1;j<=3;++j)

my1.A[i][j]=0;

}

//給圖形變換矩陣賦值

my1.A[1][1]=5;

my1.A[2][2]=2;

my1.A[3][3]=1;

RedrawWindow();

my1. Display ();

}

4.關(guān)于x軸對(duì)稱

void CMyView::OnMirrorX()

{

// TODO: Add your command handler code here

int i,j;

CMyClass my1; //構(gòu)造新的CMyClass對(duì)象

//將圖形變換矩陣清零

for ( i=1;i<=3;++i)

{

for ( j=1;j<=3;++j)

my1.A[i][j]=0;

}

//給圖形變換矩陣賦值

my1.A[1][1]=1;

my1.A[2][2]=-1;

my1.A[3][3]=1;

RedrawWindow();

my1. Display ();

}

5關(guān)于y軸對(duì)稱

void CMyView::OnMirrorY()

{

// TODO: Add your command handler code here

int i,j;

CMyClass my1; //構(gòu)造新的CMyClass對(duì)象

//將圖形變換矩陣清零

for ( i=1;i<=3;++i)

{

for ( j=1;j<=3;++j)

my1.A[i][j]=0;

}

//給圖形變換矩陣賦值

my1.A[1][1]=-1;

my1.A[2][2]=1;

my1.A[3][3]=1;

RedrawWindow();

my1. Display ();

}

6.關(guān)于原點(diǎn)對(duì)稱

void CMyView::OnMirrorO()

{

// TODO: Add your command handler code here

int i,j;

CMyClass my1; //構(gòu)造新的CMyClass對(duì)象

//將圖形變換矩陣清零

for ( i=1;i<=3;++i)

{

for ( j=1;j<=3;++j)

my1.A[i][j]=0;

}

//給圖形變換矩陣賦值

my1.A[1][1]=-1;

my1.A[2][2]=-1;

my1.A[3][3]=1;

RedrawWindow();

my1. Display ();

}

四.效果截圖

(一)三角形

Image.png

1.****平移變換

Image.png

2.****旋轉(zhuǎn)變換

Image.png

3.****縮放變換

Image.png

4.****對(duì)稱

(1)****關(guān)于****X****軸對(duì)稱

Image.png

(2)****關(guān)于****Y****軸對(duì)稱

Image.png

(3)****關(guān)于原點(diǎn)對(duì)稱

Image.png

(二)四邊形

將一四邊形以原點(diǎn)為中心,以150為間隔旋轉(zhuǎn)。

要求: 寫出程序框圖,程序,及運(yùn)行結(jié)果.

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

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

  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 4,070評(píng)論 0 2
  • 聽說(shuō)神不能無(wú)處不在 所以創(chuàng)造了媽媽到了媽媽的年齡 媽媽仍然是媽媽的守護(hù)神媽媽這個(gè)詞 只是叫一叫 都會(huì)觸動(dòng)心弦 -1...
    卻悔閱讀 926評(píng)論 0 6
  • 白 墻 青 瓦 清 色 石 巷 墨 雨 清 香 黃 色 紙 傘 紅 色 衣 裳 有 位 佳 人 ……
    張兮閱讀 221評(píng)論 0 16
  • 那天,有人問(wèn)我說(shuō),你有談過(guò)戀愛嗎? 我說(shuō),有。 那你最后怎么樣了? 分手了 朋友說(shuō)為什么? 因?yàn)槲覀儾缓线m 那你心...
    入戲xzk閱讀 313評(píng)論 0 0
  • 抽象類 在正常定義類前面加上關(guān)鍵字:abstract就成為了抽象類。抽象類無(wú)法被實(shí)例化,它可以用來(lái)規(guī)范一些類的共同...
    kangyiii閱讀 572評(píng)論 0 2

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