[其他] 高度圖 直線 交點

看板Math作者 (麵T)時間11年前 (2014/10/25 22:21), 編輯推噓1(1010)
留言11則, 2人參與, 最新討論串1/1
假設我有一組三維數據點 (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

10/26 01:10, , 1F
先不管z座標,找出x跟y會通過哪些xy平面的格子
10/26 01:10, 1F

10/26 01:11, , 2F
這樣最多只會枚舉到O(n+m)格
10/26 01:11, 2F

10/26 01:16, , 3F
找格子方法:枚舉所有y會發現交到的格子x值是單調的
10/26 01:16, 3F

10/27 02:07, , 4F
這也要看你的數據性質怎樣。如果平面大致上很乖沒有
10/27 02:07, 4F

10/27 02:08, , 5F
暴起暴落,那可以先看 z 的最大和最小值,把直線上
10/27 02:08, 5F

10/27 02:09, , 6F
相對應的 t 值找出來
10/27 02:09, 6F

10/27 02:09, , 7F
然後再用 t 的範圍去限制 x, y的範圍
10/27 02:09, 7F

10/27 02:12, , 8F
如果新的x, y範圍內z值變化量不大的話,還可以再一
10/27 02:12, 8F

10/27 02:12, , 9F
10/27 02:12, 9F

10/27 02:14, , 10F
總之就是先把交點的可能位置圈住,然後再對小範圍開
10/27 02:14, 10F

10/27 02:15, , 11F
暴力解
10/27 02:15, 11F
文章代碼(AID): #1KIx7E5Q (Math)