Algorytm dowolnej osi jest używany przez program AutoCAD wewnętrznie, aby zaimplementować tworzenie dowolnego, ale spójnego układów współrzędnych obiektu dla wszystkich elementów, które używają współrzędnych obiektu.
Po podaniu wektora jednostka-długość, który ma być używany jako oś Z układu współrzędnych, algorytm dowolnej osi generuje odpowiadającą oś X układu współrzędnych. Oś Y jest ustalana zgodnie z regułą prawej dłoni.
Ta metoda ma na celu sprawdzenie danej osi Z(zwanej również wektorem prostopadłym). Jeśli jest ona zbliżona do dodatniej lub ujemnej osi globalnej Z, należy przeciąć globalną oś Y z daną osią Z, aby otrzymać dowolną oś X. Jeśli nie jest zbliżona, należy przeciąć globalną oś Z daną osią Z, aby otrzymać dowolną oś X. Obwiednia, w której podejmowana jest decyzja, została wybrana jako zarówno łatwa w obliczeniu, jak i całkowicie przenośna między komputerami. Uzyskuje się to przez sortowanie „kwadratowych” zakończeń biegunowych, których granice wynoszą 1/64, co można dokładnie podać w sześciu cyfrach ułamka dziesiętnego i w sześciu bitach ułamka dwójkowego.
Algorytm wykonuje następujące operacje (zakłada się, że wszystkie wektory są w przestrzeni 3D i określone w globalnym układzie współrzędnych):
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).
W tym miejscu szukamy dowolnych osi X i Y, aby pasowały do normalnej n. Zostaną one nazwane Ax i Ay. N może również zostać nazwana Az(dowolna oś Z ) w następujący sposób:
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.
Metoda pobierania wektora Ay jest następująca:
Ay = N X Ax. Scale Ay to unit length.