回答
为什么你想这样做?你期望测试的三角形的数量是多少?实时渲染算法似乎有点复杂!
反正:
计算三角形的正常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