回答
爲什麼你想這樣做?你期望測試的三角形的數量是多少?實時渲染算法似乎有點複雜!
反正:
計算三角形的正常n
。然後計算平面方程: a.x + b.y + c.z + d = 0
與(a,b,c)
是你的三角法線和d = - dot(n,P)
(P是你的三角形頂點之一)。對第二個三角形做同樣的事情。
如果四個值abcd
等於或相反(全部一起),則兩個平面相同。
這對於所有可能的四捨五入非常敏感錯誤。 – 2010-09-16 12:21:21
@Jenko「發送給我teh codez」是因爲你不是數學專家?坦率地說,如果你正在編寫3D引擎,你應該對用於創建引擎的數學有所瞭解。否則,你只是複製和粘貼其他解決方案而不知道他們是否真正解決了你想要完成的任務。 – 2010-09-16 20:58:30
如果您被*矢量*或*矩陣*這個詞嚇倒了,您至少應該閱讀一些3D數學教程,或者您將不會成功編寫3D引擎。 http://chortle.ccsu.edu/VectorLessons/vectorIndex.html – tibur 2010-09-17 07:23:21
你問的是不可能的數字。舍入誤差會使這樣的測試完全無關緊要。
但是,您可能想要測試「如果兩個三角形在同一平面上,在一定的容差範圍內」。這是很難做到的,在這裏,舍入誤差也可能會混淆任何可能的方法。事實上,每當三角形很薄時,他們所住的飛機就會有很大的不安。
如果你真的想要的話,我可以指給你一些文獻(你最好打賭是看看CGAL庫,看他們是否實現了與你的問題相關的東西)。任何事情都可能涉及任意的精確浮點,巧妙的操作重新排序,並且無論如何都會導致不準確的結果。
因此,我強烈建議您爲您的實際問題找到另一種方法。
如果您嘗試計算通過三點的平面方程,然後測試其他三點,則舍入誤差是一個(巨大的)問題。還有另一種解決方案。
你可能想要計算你的6個點的inertia matrix,對它進行對角化,看它的最小特徵值是否在另外兩個點的某個微小值內。這意味着你的六點實際上位於同一架飛機上,在一個容差範圍內。
這大致相當於主成分分析嗎? – tibur 2010-09-17 07:28:11
@tibur:它*是一個主成分分析 – 2010-09-17 09:20:35
- 1. 在平面上變換三角形
- 2. 在3D空間中計算垂直於三角形的平面
- 3. 編程一個三角形計算器
- 4. 計算兩個三角形的交點面積
- 5. 計算三角形面積的錯誤?
- 6. 計算三角形的面積
- 7. 遞歸計算三角形面積
- 8. 不同的三角形計算方法
- 9. 計算一個三角形的面積openmesh
- 10. Java三角形計算器
- 11. 在三角形多邊形網格中計算一個洞
- 12. 計算幾個三角形的重心
- 13. 發現一個矩陣是上三角形,下三角形還是對角線
- 14. 用Javascript計算三角形的角度?
- 15. 直角三角形計算返回0?
- 16. 平面中兩個三角形的交點
- 17. 上缺少計算關鍵點的三角形的面積
- 18. 計算象限爲一個矩形內部的三角形
- 19. 在圖中計算三角形
- 20. 計算兩個三角形的隨機變量(Matlab的)
- 21. 爲每個三角形計算矩陣與地形的角度
- 22. 尋找一個點是否在一個三角形內
- 23. 從面積和角度計算三角形
- 24. C Plus Plus:計算矩形和三角形的面積
- 25. 計算在C#中使用ARCSIN一個直角三角形的角度
- 26. 由兩個三角形
- 27. 在畫布上繪製兩個三角形的正方形,三角形後面有空白
- 28. 檢查點集三角形細分是一個三角形
- 29. 雷(平面)三角形相交
- 30. solvePNP用於平面三角形
您能否簡要介紹一下您試圖實現的渲染效果? – tibur 2010-09-16 13:50:52
同一平面上的任何三角形都將渲染爲一個平面填充,因此我將計算哪些三角形可以合併爲多邊形(一次),然後渲染它們以繪製一個形狀(每個渲染) – 2010-09-16 16:09:43