需要确定一个矩阵来对齐两个三角形

时间:2011-10-11 09:01:40

标签: c++ rotation directx-9

我需要确定一个矩阵,表示在3D中对齐两个已知的全等三角形所需的变换。我之前曾尝试过询问a different approach,但我一直在努力解决这个障碍,所以我现在正在尝试尝试不同的想法。

是否有人能够指导我如何创建矩阵来表示将三角形(DEF)移动到与另一个(ABC)相同的位置和方向所需的平移和旋转A在哪里?

2 个答案:

答案 0 :(得分:0)

我想到的一个想法(这可能既不是最简单也不是最有效的方法)是从计算三角形的circumcenters开始。然后可以使用通过它们的唯一线来构建translation matrix,以便将一个三角形拖到另一个上(可能使它们相交)。

由于你有三角形,你也可以计算包含它们的各个平面的方程,这些平面之间的角度,以及你需要应用的rotation matrix,以便两个三角形都以同一架飞机。最后,您需要应用一个最终旋转来匹配现在位于同一平面中的三角形。

答案 1 :(得分:0)

第一。想到一个“基本”三角形。当X =(0,0,0),Y =(1,0,0)时Z轴和Z轴,具体取决于角度 第2位。对于每个三角形,找到将它移动到这个“基本”的方法 对于DEF来说,使用基本移动动作将D移动到A.绕z旋转直到E在xz平面中,绕x旋转直到F在x +侧的xy平面中 如果那很清楚那么你就知道如何创建一个矩阵来将每个三角形移动到同一个基本三角形 现在..如果你采用一个识别矩阵,并且对于你在矩阵右侧(第二个)做的每一个动作,你将在识别矩阵的左边做相反的动作,你最终会得到一个矩阵来移动三角形的基本三角形。

我希望它能让人感到满意,用英语解释对我来说有点困难......