精華區beta GameDesign 關於我們 聯絡資訊
※ 引述《KanoLoa (諾)》之銘言: : 最近寫遊戲,需要將2D的圖片模擬成有遠近之分的效果。 : 我在定位座標位置的時候遇到了很大的困難 /_\ : 請看 http://w5.loxa.com.tw/hua0004/mathptt.GIF
: 這算是從中間望向遠處的概念圖? : 右圖本來是一個矩形的圖形, : 經過放遠之後,會變得像左邊的圖一樣。 : 而 A , B 的大小是我可以決定的,相當於決定在A點時,縮放的大小。 : 左圖Y1~Y8 彼此間距離相同。 : 但是經過放遠之後,彼此的間隔大小將會是不同的。 : ========== : 我的問題就出在,假設有某物件,原本是在總長 3/7 的位置。 : 我該如何找出轉換之後,它應該所在的位置呢? : (就如圖,右邊的紅線在Y3,Y4之間,轉換之後的高度就不再是 3/7 的位置 ) : 請問有什麼方法或是公式能求解嗎? : 我只會用對角線不斷的找出中心點,(如左圖畫出等份的方法,有小灰線) : 但是這樣永遠只能分出 2^n等份,不在 k/2^n 的位置會很難找 ,EX: 1/3 。 : 我希望是,決定A,B的長度、原本所在的比例位置, : 就能找出轉換後的位置。 : 想請好心的版友幫忙,或是給點提示,拜託了 O_Q : (我有貼在 math 跟 ask 版問過, 無人問津 /__\。) 一消失點座標系 http://etrex.blogspot.com/2008/03/blog-post_14.html 延伸產物 (含有c++ code) http://etrex.blogspot.com/2008/03/beta.html 原理: 假設Y有100段 根據三角形相似原理得出 Y1:Y2 = Y2:Y3 ... 以此類推 設Y1 = 1 (最近的Y單位長度應與X單位長度相同) 設Y100 趨近於0 (假設Y100 = 0.01) 解公比 r Y100 = r^99 Y100 ^ (1/99) = r 得到 r = pow( Y100 , 1/99 ) //C++語法 不過我是用1/100 想要 Yn 座標 就必須求等比級數 Sn = y1 * (1-r^n) / (1-r) //y1 = 1 所以 Sn = (1-r^n) / (1-r) 但我在程式中是寫 1 - r^n PS:Y座標會影響X座標... 看看我的code吧 XD -- http://etrex.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.71.124
etrexetrex:我竟然在文章裡寫註解!! 04/04 02:03
※ 編輯: etrexetrex 來自: 61.231.71.124 (04/04 02:35)
etrexetrex:我寫的邏輯跟我code的邏輯好像不同,但我忘了之前想啥 04/04 02:45
KanoLoa:哇哦 感謝!!!! 我先努力參透 感激 ! 04/04 03:00
etrexetrex:好像有點想起來了 我寫的邏輯是不可行的 但code的可以 04/04 04:07
etrexetrex:是因為文章中的計算方式 Y總長是未知數 無法控制 04/04 04:07
etrexetrex:但code則是總長度以等比方式遞減來求得第n項 04/04 04:08
etrexetrex:因此可能產生小誤差 0.0 04/04 04:10
KanoLoa:感謝  繼續參透...+_+ 04/04 14:42
pthuang:還好你是用 C++ 不用打/*!@$%^&*/   XD 04/04 23:47
etrexetrex:XD 04/05 00:23
Bencrie:C也可以用 // 啊 04/05 16:23
doomleika:標準不行喔XD能吃的是compiler自己加的 04/05 18:07
godfat:C99 可以 04/05 23:55
doomleika:唔._.感謝指正orz 04/06 03:00
KanoLoa:感謝 我搞定了!!! 04/06 03:34
pthuang:我猜d 大是 Dev-C++ 下的荼毒物 XD 04/07 09:05
doomleika:不,我是常常忘記有c99而已._. 04/07 13:04
pthuang:XD 04/07 15:03