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

C++ 需要确定一个矩阵来对齐两个三角形,c++,rotation,directx-9,C++,Rotation,Directx 9,我需要确定一个矩阵,表示在3D中对齐两个已知全等三角形所需的变换。我以前试过询问关于服用的问题,但我遇到了很多障碍,所以我现在考虑尝试不同的想法 有人能告诉我如何创建一个矩阵来表示将三角形(DEF)移动到与另一个(ABC)相同的位置和方向所需的平移和旋转,其中a位于原点吗?我想到了一个想法(这可能既不是最简单也不是最有效的方法)首先计算三角形的长度。然后可以使用穿过三角形的唯一直线来构建三角形,从而将一个三角形拖到另一个三角形上(可能使它们相交) 因为你有三角形,你也可以计算包含它们的各个平面的

我需要确定一个矩阵,表示在3D中对齐两个已知全等三角形所需的变换。我以前试过询问关于服用的问题,但我遇到了很多障碍,所以我现在考虑尝试不同的想法


有人能告诉我如何创建一个矩阵来表示将三角形(
DEF
)移动到与另一个(
ABC
)相同的位置和方向所需的平移和旋转,其中
a
位于原点吗?

我想到了一个想法(这可能既不是最简单也不是最有效的方法)首先计算三角形的长度。然后可以使用穿过三角形的唯一直线来构建三角形,从而将一个三角形拖到另一个三角形上(可能使它们相交)


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

O我脑海中浮现的一个想法(这可能既不是最简单也不是最有效的方法)是从计算三角形的长度开始。然后可以使用穿过三角形的唯一直线来构建三角形,这样可以将一个三角形拖到另一个三角形上(可能使它们相交)

由于有三角形,您还可以计算包含它们的各个平面的方程,这些平面之间的角度,以及您需要应用的角度,以便两个三角形最终位于同一平面。最后,您需要应用最后一次旋转,以匹配现在位于同一平面上的三角形。

1想象一个“基本”三角形。当X=(0,0,0)、Y=(1,0,0)和Z(取决于角度)时,XYZ 2.对于每个三角形,找到将其移动到此“基本”位置的方法。
对于DEF,使用基本移动动作将D移动到A。围绕z旋转直到E位于xz平面,围绕x旋转直到F位于x+侧的xy平面。
如果这一点很清楚,那么您就知道如何创建一个矩阵,将每个三角形移动到相同的基本三角形。
现在..如果你做一个识别矩阵,你在矩阵右侧(2)做的每一个动作,你都会在识别矩阵左侧做相反的动作,你会得到一个从基本三角形移动到三角形的矩阵

我希望这会让我觉得用英语解释有点困难…

1.想想一个“基本”三角形。当X=(0,0,0),Y=(1,0,0)和Z时,根据角度而定。XYZ 2.对于每个三角形,找到将其移动到此“基本”位置的方法。
对于DEF,使用基本移动动作将D移动到A。围绕z旋转直到E位于xz平面,围绕x旋转直到F位于x+侧的xy平面。
如果这一点很清楚,那么您就知道如何创建一个矩阵,将每个三角形移动到相同的基本三角形。
现在..如果你做一个识别矩阵,你在矩阵右侧(2)做的每一个动作,你都会在识别矩阵左侧做相反的动作,你会得到一个从基本三角形移动到三角形的矩阵


我希望这会让我很兴奋,用英语解释对我来说有点困难…

因为“众所周知是一致的”你的意思是有相同的内角吗?@Roee,是的。除了一些平移和旋转之外,这两个三角形可以假设是相同的。我被告知不必担心缩放。两个三角形之间的内角和边长应该相等。通过“已知为全等”你的意思是有相同的内角吗?@Roee,是的。除了一些平移和旋转之外,这两个三角形可以假设是相同的。我被告知不必担心缩放。两个三角形之间的内角和边长应该相等。