回答
您可以通過形成6個方形金字塔來測試該方法,其中您的點爲頭部,每個四邊形的4個頂點爲底部,然後總計四角錐體的體積。如果數量的總和等於您的箱子的體積,則該點位於箱子中。如果音量總和大於您的盒子音量,那麼它在盒子外(音量總和永遠不會小於盒子音量)。
要計算每個正方形金字塔的體積,可以將它分解爲兩個四面體,其體積可以通過mix vector product輕鬆計算。你也可以用混合矢量產品計算盒子的容量。
假設點有一個已知的順序,你可以計算出法向量。這種測試不需要標準化,所以成本並不高。如果您已經知道這是一個長方體,那麼您只需要計算兩個法線,因爲您可以用十字產品獲得第三個法線,然後使用其他點來計算距離。顯然你是交叉產生以獲得法線,所以這更多的是關於你想向誰揭露什麼信息的問題。
如果點沒有已知的順序,那麼你可以應用QuickHull的微縮版本 - 從最初的三角形開始,你應該發現你已經有一個真正的邊緣面(在這種情況下,你可以使用該法線並在該法線的另一個極端找到相關點以及相互正交的要求以得到所有三個法線),或者一步給出至少兩個真實的邊緣,當它們的局部集合前面的點變空了。
一個瘋狂的想法,也許是: -
- 組建3D正投影上1x1像素視
- 設置相機和近剪裁平面這樣的的關注點是在近剪裁平面
- 呈現框而沒有任何背景揀出
- 如果只有一個象素被渲染然後點是盒子,0或2或更多個像素渲染然後內部的點是框
我會說這是一個瘋狂的想法:)我在這種事情上我的深度,但不是你的答案做更多的工作,然後有必要確定答案使用普通的舊數學? –
我想這取決於你有什麼設施可以讓你進行光柵化處理?它還提出了另一種線性代數方法 - 即如果從任何方向上的點到無限的線段恰好與盒子相交一次,則該點在盒子內。如果光柵化,則通過裁剪和投影來執行該測試。 – Tommy
- 1. 無法定義頂點
- 2. A *算法重新頂點
- 3. 計算頂點法線
- 4. 計算邊界框的頂點
- 5. SceneKit中的自定義頂點屬性
- 6. 如何計算中點頂點?
- 7. 頂點覆蓋的近似算法
- 8. 計算網格的頂點法線
- 9. 如何定義形狀的頂點
- 10. OpenGL ES 2.0頂點轉換算法
- 11. Dijkstra算法找出兩個頂點C++
- 12. 固定點Cholesky算法的優點
- 13. 從定點算法的浮點轉換
- 14. XNA 4.0自定義頂點聲明
- 15. 頂點觸發與自定義對象
- 16. 從特定頂點執行深度優先算法
- 17. graph_tool graph_draw頂點文本框邊距頂點重疊
- 18. Gremlin-Traversing查找與特定頂點無關的所有頂點
- 19. MIPS中的定點算術
- 20. JUNG2:將頂點放在固定點
- 21. 計算旋轉矩形的頂點
- 22. 預先計算CPU上的頂點
- 23. 用於查找關節點或切割圖的頂點的算法的說明
- 24. 定點算術
- 25. 算法計算最大點在點集
- 26. 在Python中使用mplPath定義多邊形的頂點
- 27. 更改導入模型中頂點緩衝區的定義
- 28. 修改VTK中的polyData點/頂點
- 29. 給定圖的頂點的k-着色計算(k-1) - 着色
- 30. 特定的滴點算法 - Matlab
你有沒有試過在[數學](http://math.stackexchange.com/)上問這個問題? –