我试图找出两个三角形是否彼此面对。我有形成三角形的点和它们的顺序(所以我可以使用叉积和左手拇指规则来衡量方向)。我应该澄清我所说的面对的意思。三角形不需要直视彼此,只是在它们共享的平面平行并且每个三角形的法线方向朝向另一个平面的意义上面对。这有点棘手,因为我允许每个三角形有几度的余地,所以平面不一定是平行的。我的问题是,如何检查三角形是否彼此相望? (即使只是检查法线是否在另一个三角形平面两侧的 90 度范围内,我遇到的问题是角度计算只是在这些计算中给出内角)。我不确定我对这个问题的描述有多好。如果我可以提供任何其他信息或我可以澄清的内容,请询问。谢谢。 最佳答案 假设你的三角形是 A : A1A2A3 和 B : B1B2B31) 计算 N1,A1A2 和 A1A3 的归一化叉积。2) 测试 B 被 A '看',即 N1 • A1B1 > 0。3) 计算N2,即B1B2 和B1B3 的归一化叉积。如果您想测试“严格面对”,则测试 N1•N2 == -1(其中 • 是点积)。对于不太严格的面,您可以测试 N1•N2 - (-1) 正如@BenAaronson 指出的那样,您可能想通过测试 (A1A2,A1A3) 与 (B1B2,B1B3) 是否共面来测试矩形是否在同一平面上。 如果 O 是原点,则测试 N1•OA1 = - N2•OB1( rq 这里 N2 = - N1 所以你可以测试 N1•OA1 = N1•OB1 )。关于c# - 确定三角形是否彼此面对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24529677/ 10-13 06:48