Примечание о терминологии: Строго говоря, не совсем понятно, что вы подразумеваете под "кватернионом, перпендикулярным одному из базисных векторов" ... кватернионы и трехмерные векторы не сравнимы таким образом. Однако кватернионы можно рассматривать как представление оси вращения (трехмерного вектора) и скалярного угла поворота, поэтому я предполагаю, что вы хотите знать,
ось вращения перпендикулярна одному из базисных векторов.
Для единичных кватернионов, рассматриваемых как трехмерные вращения, существует соглашение, что для q = (w, x, y, z),
x, y и z образуют трехмерный вектор (назовем его qv) вдоль оси вращения, а w = cos (alpha / 2) представляет угол поворота альфа.
В вашем случае qv = (x, y, z) = (0, -0,229860, 0). vx, vy и vz - все единичные векторы,
так что легче увидеть, что происходит, если вы нормализуете qv, чтобы он также был единичным вектором.
Разделите его на длину (0,229860), чтобы получить qv_unit = (0, -1, 0). Найти
углы между qv_unit и vx, vy и vz, используйте произведение точек:
Для единичных векторов v1 = (a, b, c) и v2 = (d, e, f):
cos (theta) = v1 точка v2 = ad + be + cf
qv_unit dot vx = 0 * .447410 + -1 * 0 + 0 * -894329 = 0 = cos (theta), поэтому theta = pi / 2, и
мы видим, что qv_unit перпендикулярно vx.
qv_unit точка vy = 0 * 0 + -1 * 1 + 0 * 0 = -1 = cos (theta), поэтому theta = pi и qv_unit
антипараллельно vy.
qv_unit dot vz = 0 * .894329 + -1 * 0 + 0 * .447410 = 0 = cos (theta), поэтому theta = pi / 2, и
qv_unit также перпендикулярно к vz.