廣告贊助

 

(c)1993 CAPCOM

a.GIF
下載模擬程式 http://victory922.myweb.hinet.net/demo/GRAPHIC.rar

看起來很威對吧
不過其實這把劍轉來轉去,轉了老半天

sword.GIF

其實只有在操縱節而已

因為,兩點,決定一

線圍起來,又決定一


 

通常在寫程式的時候,會把所有點列成一個陣列

例如 (1,2) (2,4) (4,5)

就會列成

┌  1  2  4   ┐
└  2  4  5   ┘

但是實際上應該會寫成

┌  1  2  4  1  ┐
└  2  4  5  2  ┘

差別在於,第一個點要重複一次

 

 


為什麼呢?

 

vertlink.PNG

因為一般來說,程式都是設計成 第一個點 連到 第二個點; 第二個點 連到 第三個點 ........以此類推

但是如果沒有往回連到第一個點,就會像左圖那樣


所以如果要修正這個問題,最快的方法就是「把第一個點再寫一次」

這樣就可以達到往回連的效果

 

 

 

接著,要怎麼操縱這些點呢?

要做的就是兩個矩陣相乘

也就是,原矩陣 和 特定矩陣 相乘

但是不能直接相乘,要先把原本的資料拆開,才能作相乘的動作

例如

┌  1  2  4  1   ┐
└  2  4  5  2   ┘

先拆開

┌ 1 ┐ ┌ 2 ┐ ┌ 4 ┐ ┌ 1 ┐
└ 2 ┘ └ 4 ┘ └ 5 ┘ └ 2 ┘

接著就可以作相乘的動作

四個陣列分別去做

例如,先作第一個  (藍色是要相乘的矩陣)

┌ 1 ┐ ┌ 1  0  ┐
└ 2 ┘ └ 0  2  ┘

 相乘等於

┌ 1 ┐
└ 4 ┘

這是第一個矩陣相乘的結果

 

再把其他的統統做完,這四個矩陣分別為

┌ 1 ┐ ┌ 2 ┐ ┌ 4  ┐ ┌ 1 ┐
└ 4 ┘ └ 8 ┘ └10 ┘ └ 4 ┘

也就是

┌ 1   2    4   1 ┐
└ 4   8  10   4 ┘

這就是我們要的結果

 

 


 

然後,藉由和不同的矩陣相乘,就會得到不同的結果

像剛才我們乘以

┌ 1  0  ┐
└ 0  2  ┘

就會得到 Y座標變成兩倍的大小

也就是如果原本的圖形是這樣

sword.GIF

相乘之後圖形就變成

sword.GIF

變成兩倍高度

 

如果是乘以

┌ 2  0  ┐
└ 0 1  ┘

則因為X座標全部變兩倍,圖形會變成兩倍寬度

 

 


 

乘上其他不同的矩陣

還可以做到  放大 縮小 映射 旋轉....等等功能

有興趣的可以自己去找找看

或者...待續

 

 



創作者介紹

Frank's 資訊科技潮流站

finalfrank 發表在 痞客邦 PIXNET 留言(0) 人氣()