Вычисление двух векторов, перпендикулярных третьему в 3D
Чтоbest (fastest) способ вычислить два вектора, которые перпендикулярны третьему вектору (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 (второй и третий столбец). Как известно, все оси должны быть перпендикулярны друг другу.