ディジタイザ/タブレットは、TABLET[タブレット設定]コマンドまたは AutoLISP の tablet 関数で位置合わせできます。
tablet 関数を使用すると、アプリケーションは、位置合わせを直接行い、今後の使用のために設定値を保存しておくことで、位置合わせを管理できるようになります。tablet 関数の最初の引数は整数 code です。code が 0(ゼロ)の場合、この関数は現在の位置合わせを返します。code が 1 の場合、位置合わせは残りの引数に従って設定されます。位置合わせは code に加えて、4 つの 3D 点として表されます。
最初の 3 つの点、row1、row2、row3 は、タブレットの変換マトリックスの 3 行です。4 番目の点 direction は、タブレットの表面を置く平面の標準ベクトルです(WCS[ワールド座標系]で表されます)。TABLET コマンドを使用して位置合わせを行う場合、そのタブレットの表面は現在の UCS の XY 平面に置かれるものとみなされます。
次のコードは現在のタブレットの位置合わせを検索し、それを変数 tcal に保存します。
(defun C:TABGET () (setq tcal (tablet 0)) (if tcal (princ (strcat "\nConfiguration saved, " "use TABSET to retrieve calibration." ) ) (princ "\nCalibration not obtainable ") ) (princ) )
TABGET コマンドが正常に終了した場合、変数 tcal には tablet 関数から返されたリストが代入されます。このリストは、たとえば次のように表示されます。
(1 (0.00561717 -0.000978942 -7.5171) (0.000978942 0.00561717 -9.17308) (0.0 0.0 1.0) (0.0 0.0 1.0) )
位置合わせを前のルーチンで取得した値にリセットするには、次のコードを使用することができます。
(defun C:TABSET () (if (not (apply 'tablet tcal)) (princ "\nUnable to reset calibration. ") (progn (princ "\nTablet calibration reset. ") (setvar "tabmode" 1) (if (= (getvar "tabmode") 0) (princ "\nUnable to turn on tablet mode ") ) ) ) (princ) )
引数 row1、row2、row3 は、2D 点を変換する 3 x 3 変換行列として渡されます。2D 点は同次の座標における列ベクトルとして表されるので(3 番目の要素として 1.0 を追加)、変換は次のように行われます。
点の計算は、3D の場合に似ています。AutoCAD は、次の式を使用して点を変換します。
変換結果のベクトルは、最初の 2 つの(X',Y')コンポーネントを 3 番目のコンポーネント(尺度係数 D')で割ることによって、2D 点に戻すことができます。結果の 2D 点は(X'/D',Y'/D')のようになります。
最も一般的な投影変換については、tablet は完全な計算を行います。しかし、アフィン変換および直交変換については、M 20 と M 21 は両方とも 0(ゼロ)なので、D' は 1.0 になります。D' の計算と除算は省略され、結果の 2D 点は単に(X',Y')になります')。
これで明らかなように、アフィン変換は投影変換の特殊で均等な形です。直交変換はアフィン変換の特殊な形で、M 20 と M 21 が 0(ゼロ)で、M 00 = M 11 、M 10 = -M 01 です。