L'algorithme d'axe arbitraire est utilisé en interne par AutoCAD pour mettre en oeuvre une génération arbitraire mais homogène de systèmes de coordonnées d'objets pour toutes les entités qui utilisent des coordonnées d'objets.
A partir d'un vecteur de longueur unitaire utilisé comme axe Z d'un système de coordonnées, l'algorithme d'axe arbitraire génère un axe X correspondant pour ce système de coordonnées. L'axe Y suit par application de la règle de la main droite.
Cette méthode permet d'examiner l'axe Z indiqué (également appelé vecteur normal). S'il est près de l'axe positif ou négatif Z du système de coordonnées général, croisez l'axe Y du système de coordonnées général et l'axe Z donné pour parvenir à l'axe X arbitraire. Sinon, coupez l'axe Z du système de coordonnées général avec l'axe Z donné pour obtenir l'axe X arbitraire. La limite à laquelle la décision est prise est à la fois facile à calculer et portables d'une machine à l'autre. Cela est réalisable grâce à une sorte de capsule polaire “carrée“ dont les limites sont de 1/64, ce qui est précisément définissable par des fractions décimales et des octets de fraction binaire à six chiffres.
L'algorithme effectue les opérations suivantes (tous les vecteurs sont supposés être dans l'espace 3D et spécifiés dans le système de coordonnées général.)
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).
Nous recherchons ici les axes X et Y arbitraires allant avec la normale N. Ils auront pour noms Ax et Ay. N peut également être nommé Az (axe arbitraire Z ) en procédant comme suit :
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.
La méthode permettant d'obtenir le vecteur Ay est la suivante :
Ay = N X Ax. Scale Ay to unit length.