Algorytm dowolnej osi (DXF)

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.