回答
爲什麼你想這樣做?你期望測試的三角形的數量是多少?實時渲染算法似乎有點複雜!
反正:
計算三角形的正常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. 計算一個三角形的面積openmesh
- 6. Java三角形計算器
- 7. 在圖中計算三角形
- 8. 計算兩個三角形的隨機變量(Matlab的)
- 9. 從面積和角度計算三角形
- 10. 由兩個三角形
- 11. 在畫布上繪製兩個三角形的正方形,三角形後面有空白
- 12. 在畫布上畫一個三角形
- 13. 檢查點集三角形細分是一個三角形
- 14. 用三角形條創建平面
- 15. 改變一個平面的三角形的顏色3JS
- 16. 測試一條線是否在三角形內有一個點
- 17. 誰計算gl_FragColor三角形內的點?
- 18. 公式來計算三角形邊寬
- 19. 三角形頂點 - Lua計算?
- 20. 三角形C++邊緣計算
- 21. 如何計算三角形的高度
- 22. 爪哇角度在非直角三角形計算點
- 23. 無法驗證一個形狀是否爲三角形
- 24. 查找兩個三角形是否相交或不
- 25. 計算使用方法System.Math類(C#)一個三角形的面積
- 26. 如何檢查一個點是否在三角形中?
- 27. 如何找到一個點是否在三角形內?
- 28. 用Python計算三角形的面積和周長?
- 29. 計算三角形面積的C++函數
- 30. 三角形周長和麪積計算器
您能否簡要介紹一下您試圖實現的渲染效果? – tibur 2010-09-16 13:50:52
同一平面上的任何三角形都將渲染爲一個平面填充,因此我將計算哪些三角形可以合併爲多邊形(一次),然後渲染它們以繪製一個形狀(每個渲染) – 2010-09-16 16:09:43