任意の軸アルゴリズム

提供:GizmoLabs - だいたい CAD LISP なサイト

任意の軸アルゴリズムは、CAD が内部的に使用するものである。これにより、オブジェクト座標を使用するすべての図形に対する任意で定型のオブジェクト座標系が生成される。

座標系の Z 軸として使用される単位長のベクトルが与えられると、任意の軸アルゴリズムは、その座標系に適合する X 軸を生成する。 その後、右手の法則によって Y 軸が生成される。

この方法では、与えられた Z 軸(「法線ベクトル」とも呼ぶ)が調べられる。それがワールド座標の Z 軸の正または負方向に十分に接近していれば、ワールド座標の Y 軸と与えられた Z 軸との外積が計算され、これが任意の X 軸となる。十分に接近していない場合は、ワールド座標の Z 軸と与えられた Z 軸との外積が計算され、これが任意の X 軸となる。十分に接近しているかどうかの決定には、境界が使用される。これは、計算を容易にしハードウェアに依存しないため。 これは、一種の "正方形" の極キャップによって実現される。 境界の値は 1/64 で、これは 10 進数では小数点以下 6 桁、2 進数では 6 ビットで正確に指定することが可能。

アルゴリズムは次のようになる(すべてのベクトルは 3D 空間にあり、ワールド座標系で指定されているものとする)。

与えられた法線ベクトルを N とする。
ワールド座標の Y 軸を Wy とする。これは常に(0,1,0)。
ワールド座標の Z 軸を Wz とする。これは常に(0,0,1)。

これから、法線 N に対する任意の X 軸および Y 軸を求める。 これを、Ax および Ay とする。 次に示すように、N は Az(任意の Z 軸)と呼ばれることもある。

(abs (Nx) < 1/64) かつ (abs (Ny) < 1/64) の場合
     Ax = Wy X N ("X" は外積演算子)
それ以外の場合、
     Ax = Wz X N
Ax は単位長に調整される。

Ay ベクトルを求める方法は、次のとおり。

Ay = N X Ax Ay は単位長に調整される。