在空间中,有两个三角形,分别是三角形ABC和三角形DEF,它们的顶点坐标分别是A(x1,y1,z1),B(x2,y2,z2),C(x3,y3,z3);D(x4,y4,z4),E(x5,y5,z5),F(x6,y6,z6),请问判断三角形ABC在三角形DEF的具体算法是什么?
在空间中,有两个三角形,分别是三角形ABC和三角形DEF,它们的顶点坐标分别是A(x1,y1,z1),B(x2,y2,z2),C(x3,y3,z3);D(x4,y4,z4),E(x5,y5,z5),F(x6,y6,z6),请问判断三角形ABC在三角形DEF的具体算法是什么?
4 回答1.7k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
4 回答2.3k 阅读
3 回答1.3k 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
首先要知道 三个点可以确定唯一的一个平面 ,这个在立体几何中一般称为 “第三公理”,高中应该都学过
如果这两个三角形共面,那么它们所有的点才会在同一个平面上。也就是说,至少有四个点是共线的。(如果都不共面,那直接不用判断了,肯定不会存在包含关系)
如何判断共面呢?可以根据 法线向量 (也就是垂直于平面的向量)判断,比如假设 DEF 的法线向量为
N_DEF
,则有公式N_DEF = (E-D) × (F-D)
对于三角形 ABC 中的每个顶点(A、B、C),计算该顶点到三角形DEF的三个边的法线向量:N1、N2、N3 分别为
那判断两个三角形向量的点积即可
以下是 java 实现
我的测试用例在注释中,这版应该没问题