Существует бесконечное количество возможных направлений X / Y.
Если вы хотите получить произвольный вектор, перпендикулярный данному Z, вы можете применить следующий подход:
Сравните величины компонент вектора Z. Замените наибольшие и последующие компоненты, отмените наибольшие, уменьшите наименьший компонент.
Например, если Abs(Z.z)>=Abs(Z.x)>=Abs(Z.y)
, то вектор X = (-Z.z, 0, Z.y)
перпендикулярен (проверьте, что скалярное произведение равно нулю). Для вашего примера:
Z(2, 5, 8)
X(0, -8, 5)
Y = Z x X (vector product)