看板 GameDesign 關於我們 聯絡資訊
※ 引述《euph (咬咬嚼嚼猴子口味)》之銘言: : 先謝謝前輩們提供解法 : Flood fill雖然解決我大部份的問題 : 但是在天蠶變線段行走路線完成後 : 要判定在圈內還是圈外這邊又卡住 : 有沒有鄉民有做過相關專案的 可以再給我一點建議 : 或是私下跟我討論一下嗎? : 真沒想到越直覺的遊戲 反而讓我腦筋卡住 : 人在國外工作 想找人好好討論一下都沒辦法 (語言不夠溜~"~) : 只好一直上PTT找鄉民前輩討教了 : 還請大家再撥冗幫幫我吧! 只能直角轉彎的狀況 將所有轉角點用X排序,會發現所有的點都是兩兩相對 有遇到一個x有2個以上的點也一定是雙數..就把Y排序 Y' = Y1-Y2 + Y3-Y4 + ... 然後X往右邊掃,每掃一組新的點就看是不是已經有了,新的加進去舊的拿掉得到新的Y' 而舊的Y' * 已經掃的距離X'就是面積,算到完就是所有面積...不知道是不是你要的@@ 其實是積分的概念Orz -- 明知道這是不可能的願望 卻如同烙印的爪痕沁入大地 假如 可以實現的話 將我的存在剝奪 捨棄也無妨 祈禱著 祈求著 幻想也好 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.182.68 ※ 編輯: LayerZ 來自: 60.251.182.68 (02/26 17:17)
euph:謝謝L大 只是我這樣算完之後 會發現如果是要填一個凹字這樣的 02/26 17:19
euph:圖就會掃不到圖 02/26 17:20
euph:而麻煩的是 這個凹字 還會凹向上下左右.... 02/26 17:21
euph:然後也還有一個狀況是 只轉一次角就圈到地的情況這也會很難算 02/26 17:22
LayerZ:是我的算法嗎...應該可以處理所有的不規則矩形面積阿 02/26 17:23
LayerZ:只轉一次碰到地,代表你只有矩形的三個點,要把第四個補起 02/26 17:24
LayerZ:來才能丟進去算阿@@ 02/26 17:24
euph:假設凹字好了 完全沒有轉角 只有起點和終點.. 02/26 17:25
LayerZ:凹字有8個轉角點? 02/26 17:26
euph:第四個點就很難取 有可能那個圖形凹的很奇怪 02/26 17:26
euph:不是 我的意思是說 原有的圖形是凹 然後線段把上面那個洞補起 02/26 17:27
LayerZ:怎麼取矩形是另外一個問題了,我好像沒想那麼多OTZ 02/26 17:36
euph:我也是卡這邊好幾天了 真的是被自己亂提的主意搞死 >"< 02/26 17:39
LayerZ:應該有個容器紀錄順序吧.. 02/26 18:08
LayerZ:算出這次畫線兩端插入點進容器 然後會變成兩個新容器 02/26 18:10
LayerZ:比如原本的點順序是1~10 插入3.5 5.5 會變成1~3.5 5.5~10跟 02/26 18:11
LayerZ:3.5~5.5兩個容器 兩個都算一次留面積較大者 不過效能.. 02/26 18:11
KanoLoa:為什麼用flood fill還要再去想面積的算法? 02/27 00:07
LayerZ:因為我不會flood fill阿(遮臉 02/27 10:04
LayerZ:因為如果是直角的話,記錄轉彎點應該是最直觀的作法 02/27 10:05
LayerZ:這樣也可以用最簡單的算式把點掃過一便就解決 02/27 10:06
wulouise:用積分直接跑一次好像也ok? 一定算得出圈內多少 02/27 23:28