Каков лучший (самый быстрый)способ вычисления двух векторов, которые перпендикулярны третьему вектору (X), а также перпендикулярны друг другу?
Вот как я вычисляю эти векторы прямо сейчас:
// HELPER - unit vector that is NOT parallel to X
x_axis = normalize(X);
y_axis = crossProduct(x_axis, HELPER);
z_axis = crossProduct(x_axis, y_axis);
Я знаю, что существует бесконечное множество решений, и мне все равно, какое из них будет моим решением.
Что стоит за этим вопросом: мне нужно построить матрицу преобразования, где я знаю, в каком направлении должна указывать ось X (первый столбец в матрице). Мне нужно рассчитать оси Y и Z (второй и третий столбцы). Как известно, все оси должны быть перпендикулярны друг другу.