Алгоритм произвольной оси используется в программе AutoCAD для реализации произвольного, но последовательного создания объектных систем координат для всех объектов, в которых используются координаты объекта.
При заданном векторе длины единиц, используемом в качестве оси Z системы координат, алгоритм произвольной оси создает соответствующую ось X для системы координат. Ось Y определяется по правилу правой руки.
Способ состоит в проверке заданной оси Z (также называется вектор нормали). Если она расположена близко к положительной или отрицательной оси Z МСК, необходимо пересечь мировую ось Y заданной осью Z для получения произвольной оси X. Если она расположена далеко, необходимо пересечь ось Z МСК заданной осью Z для получения произвольной оси X. Граница, используемая при принятии решения, выбирается таким образом: она должна быть легко вычислимой и переносимой с одного компьютера на другой. Это достигается путем создания своего рода квадратной "полярной шапки", границы которой составляют соотношение 1/64, которое можно точно задать шестью десятичными дробными цифрами и шестью десятичными двоичными битами.
При запуска алгоритма выполняются следующие действия (считается, что все векторы размещаются в 3D-пространстве в мировой системе координат):
Let the given normal vector be called N. Let the world Y axis be called Wy, which is always (0,1,0). Let the world Z axis be called Wz, which is always (0,0,1).
Нам нужны произвольные оси X и Y для нормали N. Назовем их Ax и Ay. N может быть также называться Az (произвольная ось Z), как показано далее:
If (abs (Nx) < 1/64) and (abs (Ny) < 1/64) then Ax = Wy X N (where “X” is the cross-product operator). Otherwise, Ax = Wz X N. Scale Ax to unit length.
Ниже приводится метод получения вектора Ay:
Ay = N X Ax. Scale Ay to unit length.