Как я могу найти вращение четырехугольника в 3D?

У меня есть координаты для 4 векторов, определяющих четырехугольник, и еще один для него ' нормально. Пытаюсь получить вращение четверки. Я получаю хорошие результаты для вращения по осям X и Y, просто используя нормальный режим, но я застрял с получением Z, так как я использовал только 1 вектор.

Вот мой базовый тест с использованием Обработка и ]xiclibs ( Vec3D и методы заголовка ):

import toxi.geom.*;

Vec3D[] face = {new Vec3D(1.1920928955078125e-07, 0.0, 1.4142135381698608),new Vec3D(-1.4142134189605713, 0.0, 5.3644180297851562e-07),new Vec3D(-2.384185791015625e-07, 0.0, -1.4142135381698608),new Vec3D(1.4142136573791504, 0.0, 0.0),};
Vec3D n = new Vec3D(0.0, 1.0, 0.0);

print("xy: " + degrees(n.headingXY())+"\t");
print("xz: " + degrees(n.headingXZ())+"\t");
print("yz: " + degrees(n.headingYZ())+"\n");

println("angleBetween x: " + degrees(n.angleBetween(Vec3D.X_AXIS)));
println("angleBetween y: " + degrees(n.angleBetween(Vec3D.X_AXIS)));
println("angleBetween z: " + degrees(n.angleBetween(Vec3D.X_AXIS)));

println("atan2 x: " + degrees(atan2(n.z,n.y)));
println("atan2 y: " + degrees(atan2(n.z,n.x)));
println("atan2 z: " + degrees(atan2(n.y,n.x)));

И вот результат:

xy: 90.0    xz: 0.0 yz: 90.0
angleBetween x: 90.0
angleBetween y: 90.0
angleBetween z: 90.0
atan2 x: 0.0
atan2 y: 0.0
atan2 z: 90.0

Как я могу получить вращение (вокруг центра / нормали) для Z моего квадроцикла?

1
задан George Profenza 9 October 2010 в 15:47
поделиться