Re: [求救]關於遠近的演算法

看板GameDesign (遊戲設計)作者 (moonet)時間17年前 (2008/04/04 02:00), 編輯推噓7(7011)
留言18則, 6人參與, 最新討論串3/6 (看更多)
※ 引述《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

04/04 02:03, , 1F
我竟然在文章裡寫註解!!
04/04 02:03, 1F
※ 編輯: etrexetrex 來自: 61.231.71.124 (04/04 02:35)

04/04 02:45, , 2F
我寫的邏輯跟我code的邏輯好像不同,但我忘了之前想啥
04/04 02:45, 2F

04/04 03:00, , 3F
哇哦 感謝!!!! 我先努力參透 感激 !
04/04 03:00, 3F

04/04 04:07, , 4F
好像有點想起來了 我寫的邏輯是不可行的 但code的可以
04/04 04:07, 4F

04/04 04:07, , 5F
是因為文章中的計算方式 Y總長是未知數 無法控制
04/04 04:07, 5F

04/04 04:08, , 6F
但code則是總長度以等比方式遞減來求得第n項
04/04 04:08, 6F

04/04 04:10, , 7F
因此可能產生小誤差 0.0
04/04 04:10, 7F

04/04 14:42, , 8F
感謝  繼續參透...+_+
04/04 14:42, 8F

04/04 23:47, , 9F
還好你是用 C++ 不用打/*!@$%^&*/   XD
04/04 23:47, 9F

04/05 00:23, , 10F
XD
04/05 00:23, 10F

04/05 16:23, , 11F
C也可以用 // 啊
04/05 16:23, 11F

04/05 18:07, , 12F
標準不行喔XD能吃的是compiler自己加的
04/05 18:07, 12F

04/05 23:55, , 13F
C99 可以
04/05 23:55, 13F

04/06 03:00, , 14F
唔._.感謝指正orz
04/06 03:00, 14F

04/06 03:34, , 15F
感謝 我搞定了!!!
04/06 03:34, 15F

04/07 09:05, , 16F
我猜d 大是 Dev-C++ 下的荼毒物 XD
04/07 09:05, 16F

04/07 13:04, , 17F
不,我是常常忘記有c99而已._.
04/07 13:04, 17F

04/07 15:03, , 18F
XD
04/07 15:03, 18F
文章代碼(AID): #17zHiqr0 (GameDesign)
文章代碼(AID): #17zHiqr0 (GameDesign)