Если бы они должны быть идеально лицом к лицу, я бы вообще не пытался найти вращение.
Вместо этого я бы начал с одного тетраэдра.Решите, какая грань будет использоваться со следующей.
Возьмите перекрестное произведение двух ребер на этой грани (50% вероятности того, что она указывает в направлении 4-й точки, в этом случае инвертируйте вектор).Нормализация.Умножьте на sqrt (6) / 3 * edge_length (это константа, предварительно вычислите!).
Теперь у вас есть вектор, указывающий в направлении 4-й вершины нового тетраэдра (остальные 3, которые вы уже знаете, онивы такие же, как и на лице!), с длиной высоты нового тетраэдра.
Все, что вам сейчас нужно, это начало координат вашего вектора: возьмите среднее арифметическое координат 3 общихвершины, которые дадут центральную точку этой грани.
Добавьте вектор к этой точке, чтобы получить конечную точку.
Теперь вы, два тетраэдра, разделяете одну грань (независимо от ориентации),вращение не требуется.