せん断

一部のアプリケーションでは、クライアント領域に描画されたオブジェクトをせん断する機能が提供されます。 せん断機能を使用するアプリケーションでは 、SetWorldTransform 関数を使用して、ワールド空間からページ空間への変換に適切な値を設定します。 この関数は、適切な値を含む XFORM 構造体へのポインターを受け取ります。 XFORM の eM12 メンバーと eM21 メンバーは、それぞれ水平および垂直方向の比例定数を指定します。

せん断変換には 2 つのコンポーネントがあります。 1 つ目は、オブジェクト内の垂直線を変更します。2 つ目は水平線を変更します。 次の図は、ワールド空間からページ空間にコピーされたときに水平方向にせん断された 20 単位の四角形を示しています。

ワールド空間の四角形とページ空間のトラップを示す図

水平せん断は、次のアルゴリズムで表すことができます。

x' = x + (Sx * y) 

ここで、x は元の x 座標、Sx は比例定数、x' はせん断変換の結果です。

垂直せん断は、次のアルゴリズムで表すことができます。

y' = y + (Sy * x) 

ここで、y は元の y 座標、Sy は比例定数、y' はせん断変換の結果です。

水平せん断変換と垂直せん断変換は、2 バイ 2 マトリックスを使用して 1 つの操作に組み合わせることができます。

|x' y'| == |x y| * |  1   Sx| 
                   | Sy    1| 

せん断を生成した 2 対 2 行列には、次の値が含まれています。

|1    1| 
|0    1|