※ 引述《mrbigmouth (拒絕崩潰的蒲公英)》之銘言:
: 高中數學不知道丟到哪裡去了只好來此請教 m(_ _)m
: 現有一方格地圖座標系,
: 每個座標都代表一個方格,
: 現在我要計算某個格子有光源、單位時其光線/視線能夠到達何處
: 依照簡化後的規則,一律起源格的中心點為起點,目標格的中心點為終點
: 兩點畫線之後,所經的格子邊、格子皆視為其光線/視線會經過的路段
: 這些格子邊之上、格子範圍內的一切影響源(霧氣、遮蔽物等等)都會影響到光線與視線
: (舉例而言,座標1,1到座標2,3之間會經過
: 座標1,1
: 座標1,1上面的邊
: 座標1,2
: 座標1,2右邊的邊
: 座標2,2
: 座標2,2上面的邊
: 座標2,3)
: 數學上,
: 可以把座標以x2-1的方式求出double後的座標系,
: 再求出兩點的線性方程式,
: 最後再一一代入各座標得出會經過哪些格子的邊、格子的範圍。
: ......但程式要怎麼做到這一過程?@@
: 已知兩點求出線性方程式? 這種東西沒辦法存到記憶體裡...
: 有辦法將這過程簡化為程式直接可用的公式嗎?
: 或是有大能可以提供更方便直接的作法嗎?
這我猜應該屬於 ray-tracing 的範圍吧.
有個簡單的公式, 給定一條直線(兩點)
你可以判斷 input point 是在線的 左/右.
你用 格子的端點去 scan 應該就行了.
http://stackoverflow.com/questions/4977491/determining-if-two-line-segments-intersect