(c)1993 CAPCOM
下載模擬程式 http://victory922.myweb.hinet.net/demo/GRAPHIC.rar
看起來很威對吧
不過其實這把劍轉來轉去,轉了老半天
其實只有在操縱節點而已
因為,兩點,決定一線
線圍起來,又決定一面
通常在寫程式的時候,會把所有點列成一個陣列
例如 (1,2) (2,4) (4,5)
就會列成
┌ 1 2 4 ┐
└ 2 4 5 ┘
但是實際上應該會寫成
┌ 1 2 4 1 ┐
└ 2 4 5 2 ┘
差別在於,第一個點要重複一次
為什麼呢?
因為一般來說,程式都是設計成 第一個點 連到 第二個點; 第二個點 連到 第三個點 ........以此類推
但是如果沒有往回連到第一個點,就會像左圖那樣
所以如果要修正這個問題,最快的方法就是「把第一個點再寫一次」
這樣就可以達到往回連的效果
接著,要怎麼操縱這些點呢?
要做的就是兩個矩陣相乘
也就是,原矩陣 和 特定矩陣 相乘
但是不能直接相乘,要先把原本的資料拆開,才能作相乘的動作
例如
┌ 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座標變成兩倍的大小
也就是如果原本的圖形是這樣
相乘之後圖形就變成
變成兩倍高度
如果是乘以
┌ 2 0 ┐
└ 0 1 ┘
則因為X座標全部變兩倍,圖形會變成兩倍寬度
乘上其他不同的矩陣
還可以做到 放大 縮小 映射 旋轉....等等功能
有興趣的可以自己去找找看
或者...待續
留言列表