Translation5:Transformations

From IDMLWiki

Jump to: navigation, search
変換

InDesignドキュメントには(他のものに混じって)ページオブジェクトがあります。ページオブジェクトは、1つ以上のパスで作られた、固有の形です。パスの形は、パスの始点と終点(アンカーポイント)か、アンカーポイントに接続している線分のカーブ(コントロールポイント)を指定する座標の組の連続で、完全に定義されています。ページオブジェクトの形は、xとyの座標の集まりで完全に定義されています。

1/72インチの桝目の方眼紙に、ページオブジェクトのパスを作るポイントを描くと、パスは普通、InDesignから印刷されたものとは、異なって見えるでしょう。この架空の方眼紙によって表される座標系は、オブジェクトの内部座標系です。各ページオブジェクトには、それぞれ異なる内部座標系 - 独自の方眼紙があります。ページオブジェクトの形を作るパスポイントは、常に内部座標で記述されます。

変換行列は、ページエレメントの座標系(今述べた、独自の方眼紙)とその親エレメントの座標系(別の方眼紙)との関係を特定します。変換行列を変更することによって、オブジェクトの拡大・縮小、回転、移動や他の変形を行います。例えば、InDesignでページオブジェクトを30度回転させるとき、それはオブジェクトの変換行列を変更することであり、オブジェクトの個々のパスの座標は変えません。先ほどの例でいうと、エレメントが描かれた方眼紙が親エレメントになります。

<Document>エレメントのペーストボード座標と、<Spread>エレメントの座標系の関係は、<Spread>エレメントのItemTransform属性で決まります。

IDMLでは、ページオブジェクトエレメントは<Spread>または<MasterSpread>エレメントの子エレメントであるため、ペーストボード座標系よりも、それらのエレメントの座標系と深く関わりがあります。(ページオブジェクトがレイヤーに集められる、InDesign C++モデルとは異なることに注意してください)

Documentエレメントのペーストボード座標系から、Spreadエレメントの内部座標系を通して、そして、Spreadエレメントの子としてのPageItemエレメントの内部座標系へと、エレメントに変換を適用する一連の流れを「スタック」として扱うことができます。親エレメント内でエレメントを配置するために、InDesignは子エレメントの内部座標を親エレメントの座標系に変換します。

InDesign CS5では1つのドキュメント内に異なるページサイズを定義することができます。なので、<Page>エレメントにスプレッド内での位置を定義するItemTransform属性が加わりました。この変換行列でページの内部座標(<Page>エレメントのGeometricBounds属性で定義)を親の<Spread>の座標系にします。

さらに、<Page>エレメントにMasterPageTransform属性が増え、これによりマスタースプレッドオブジェクトとページオブジェクトとの関係を定義します。この変換行列でマスタースプレッドオブジェクトの内部座標を配置されているページ内に変換します。(たとえば、個々のマスタースプレッドページオブジェクトのItemTransformの前ではなく<Spread>のItemTransformの後へ)この属性はマスターページオーバーレイ機能に相当します。詳細はInDesignのドキュメントを参照してください。

二次元のスペースの2つの座標系間の変換は、3×3の変換行列によって表されます。

Image:Math01.png

変換行列で変えられるのは、6つの要素だけで、IDMLでは標準形[a b c d e f]を使用して指定します。この変換行列は、PageItemエレメントのItemTransform属性か、または、SpreadまたはMasterSpreadエレメントのItemTransform属性に保存されます。

InDesignは下記の計算を行って(ここでTは子エレメントの変換行列)、エレメントの内部座標をその親エレメントの内部座標に変換します。

Image:Math02.png

エレメントに適用された変換行列が単位行列([1 0 0 1 0 0])だと、エレメントの内部座標系と親エレメントの内部座標系は一致します。

以下のリストは、最も一般的な変換を実行するための、変換行列です。

  • 移動 [1 0 0 1 tx ty]

txとtyは、ペーストボードの中央からの、水平と垂直のオブジェクトの移動距離

  • 拡大・縮小 [sx 0 0 sy 0 0]

sx(水平の伸縮率)、sy(垂直の伸縮率)

  • 回転 [cos(θ) sin(θ) -sin(θ) cos(θ) 0 0]

オブジェクトを左回りにθ度回転させる

  • シアー [1 tan(α) tan(β) 1 0 0]

オブジェクトのx軸(水平方向)をα度、y軸(垂直方向)をβ度傾ける

変換は、拡大・縮小→シアー→回転→移動の順に適用されます。

Personal tools