2011-11-30 62 views
3

我如何測試一個點是否在由其8個點或其6個四邊形定義的3D框內? (無權訪問正常向量)頂點定義框算法中的點?

框由三角形組成,但每邊的兩個多邊形都對齊,因此可以視爲四邊形。

+0

你有沒有試過在[數學](http://math.stackexchange.com/)上問這個問題? –

回答

1

您可以通過形成6個方形金字塔來測試該方法,其中您的點爲頭部,每個四邊形的4個頂點爲底部,然後總計四角錐體的體積。如果數量的總和等於您的箱子的體積,則該點位於箱子中。如果音量總和大於您的盒子音量,那麼它在盒子外(音量總和永遠不會小於盒子音量)。

要計算每個正方形金字塔的體積,可以將它分解爲兩個四面體,其體積可以通過mix vector product輕鬆計算。你也可以用混合矢量產品計算盒子的容量。

1

假設點有一個已知的順序,你可以計算出法向量。這種測試不需要標準化,所以成本並不高。如果您已經知道這是一個長方體,那麼您只需要計算兩個法線,因爲您可以用十字產品獲得第三個法線,然後使用其他點來計算距離。顯然你是交叉產生以獲得法線,所以這更多的是關於你想向誰揭露什麼信息的問題。

如果點沒有已知的順序,那麼你可以應用QuickHull的微縮版本 - 從最初的三角形開始,你應該發現你已經有一個真正的邊緣面(在這種情況下,你可以使用該法線並在該法線的另一個極端找到相關點以及相互正交的要求以得到所有三個法線),或者一步給出至少兩個真實的邊緣,當它們的局部集合前面的點變空了。

0

一個瘋狂的想法,也許是: -

  • 組建3D正投影上1x1像素視
  • 設置相機和近剪裁平面這樣的的關注點是在近剪裁平面
  • 呈現框而沒有任何背景揀出
  • 如果只有一個象素被渲染然後點是盒子,0或2或更多個像素渲染然後內部的點是框
+0

我會說這是一個瘋狂的想法:)我在這種事情上我的深度,但不是你的答案做更多的工作,然後有必要確定答案使用普通的舊數學? –

+0

我想這取決於你有什麼設施可以讓你進行光柵化處理?它還提出了另一種線性代數方法 - 即如果從任何方向上的點到無限的線段恰好與盒子相交一次,則該點在盒子內。如果光柵化,則通過裁剪和投影來執行該測試。 – Tommy