c# - Triangle - 三角形相交测试

标签 c# math physics collision-detection collision

我想知道是否有一些教程或指南来理解和实现 3D 环境中的三角形-三角形相交测试。 (我不需要知道交叉点发生的确切位置,但只需要知道交叉点已经发生)

我打算按照理论 pdf 来实现它,但我很困在

  1. 计算三角形2的平面方程。
  2. 如果三角形 1 的所有点都在同一侧,则拒绝为平凡。
  3. 计算三角形1的平面方程。
  4. 如果三角形 2 的所有点都在同一侧,则拒绝为平凡。
  5. 计算交线并投影到最大轴上。
  6. 计算每个三角形的间隔。
  7. 相交区间。

本指南的第 5 点。我真的不知道在问什么(所有 5,6 和 7)。 XD

因为我没有很高的数学知识(好吧,我知道大学的几次考试给了我(我是一个原始程序员XD)),请尽量简单我。 :D(我试图在谷歌上搜索,但大多数链接指向大约 4-5 页的公式,我真的不想知道,我也不明白。)

感谢帮助

最佳答案

你说:

I'd like to know if there is out there some tutorial or guide to understand and implement a Triangle-Triangle intersection test in a 3D Environment.

然后你说:

most of the links point to some 4-5 pages full of formulas I don't really care to know

我注意到这两个陈述完全相互矛盾。那是哪一个?您想了解三角形-三角形交集的工作原理,还是您只是想要一个可行但您不了解的实现?

并不是所有的网页都充满了不必要的数学。所有的数学知识对于理解交集算法的工作原理都是必需的。从头开始,了解它是如何工作的。

一旦您知道这些词的含义,第 5、6 和 7 步就很容易理解。相交线是由两个平面相交而成的线。每个三角形都位于一个平面内。分三种情况:

  • 平面平行且不相交。三角形显然不相交。
  • 飞机是同一架飞机。三角形可能相交,也可能不相交。
  • 这些平面是在一条直线上相交的两个不同的平面。如果三角形相交,它们显然必须在那条线上相交。

假设我们处于第三种情况。计算包含在第一个三角形中的相交线段。计算第二个三角形中的相交线段。现在的问题是“这些部分是否重叠?”

您可以通过将线段投影到一个方便的轴上,并查看该轴上的线段是否重叠来解决这个问题。基本上,它的工作原理是这样的:假设您将光线照射到线段上,这样它们的阴影就会落在一个轴上。如果轴上的阴影相交,则线段必须相交。如果轴上的阴影之间有间隙,那么显然线段之间一定有间隙,因此三角形不相交。

如果您想了解它是如何工作的,那么您将需要了解所有这些东西——所有计算出平面如何相交以及如何投影的代数,这是无法回避的事实到轴上工作。这都是必要的。所有这些东西都是基本构建 block ,可以从中构建更复杂的转换、投影等,因此如果您想走得更远,请彻底了解基础知识。

关于c# - Triangle - 三角形相交测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1903258/

相关文章:

c# - 如何在 C# 中通过 byte[] 将图像放入图片框中

c# - 如何从 C# 调用 visual studio 命令

swift - 在移动平台上移动节点

c# - 从 BindingList 中删除最后一条记录会选择导致 DataGridView 滚动的最后一行

c# - 无法从 Expression< Func < Entity, bool>> 转换为 Func < Entity, bool>

math - 确定 3D 平面前的位置(笛卡尔数学)

java - 博德马斯, java 。简单的数学不会相加

java - 如何判断一个double变量是否有整型值?

artificial-intelligence - AI行为决策

physics - RoboCup 3D 足球机器人示例?