看板 Math 關於我們 聯絡資訊
假設我有一組三維數據點 (0,0,z00)(0,1,z01)...(0,n,z0n) (1,0,z10) ... (2,0,z10) ... ... (m,0,zm0) ... 及一直線L: x = x0+at y = y0+bt z = z0+ct,t>=0 請問怎麼有效率的求得直線與曲面的交點?(或無交點) 目前只想到一個沒效率的方法: 1.找相鄰三點(a,b,c)求出過這三點的平面A 2.求出A和L的交點P 3.判斷P是否位於(a,b,c)內 最差情況必須做2*m*n次 也可以找相鄰四個點,求出近似平面(或曲面)再求交點 最差情況要做m*n次 是否有哪一類的書籍專門在介紹這種問題? -- 我是麵T,哩賀 http://ppt.cc/-eS5 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.230.222.29 ※ 文章網址: http://www.ptt.cc/bbs/Math/M.1414246862.A.15A.html
fenzhang : 先不管z座標,找出x跟y會通過哪些xy平面的格子 10/26 01:10
fenzhang : 這樣最多只會枚舉到O(n+m)格 10/26 01:11
fenzhang : 找格子方法:枚舉所有y會發現交到的格子x值是單調的 10/26 01:16
wohtp : 這也要看你的數據性質怎樣。如果平面大致上很乖沒有 10/27 02:07
wohtp : 暴起暴落,那可以先看 z 的最大和最小值,把直線上 10/27 02:08
wohtp : 相對應的 t 值找出來 10/27 02:09
wohtp : 然後再用 t 的範圍去限制 x, y的範圍 10/27 02:09
wohtp : 如果新的x, y範圍內z值變化量不大的話,還可以再一 10/27 02:12
wohtp : 次 10/27 02:12
wohtp : 總之就是先把交點的可能位置圈住,然後再對小範圍開 10/27 02:14
wohtp : 暴力解 10/27 02:15