Geser

Beberapa aplikasi menyediakan fitur yang digambar objek shear di area klien. Aplikasi yang menggunakan kemampuan geser menggunakan fungsi SetWorldTransform untuk mengatur nilai yang sesuai di transformasi ruang dunia ke ruang halaman. Fungsi ini menerima penunjuk ke struktur XFORM yang berisi nilai yang sesuai. Anggota EM12 dan eM21 dari XFORM menentukan konstanta proporsionalitas horizontal dan vertikal.

Ada dua komponen transformasi geser. Yang pertama mengubah garis vertikal dalam objek; yang kedua mengubah garis horizontal. Ilustrasi berikut ini memperlihatkan persegi panjang 20 kali 20 unit yang digigit secara horizontal saat disalin dari ruang dunia ke ruang halaman.

ilustrasi memperlihatkan persegi panjang di ruang dunia dan trapeziod di ruang halaman

Geser horizontal dapat diwakili oleh algoritma berikut:

x' = x + (Sx * y) 

di mana x adalah koordinat x asli, Sx adalah konstanta proporsionalitas, dan x' adalah hasil dari transformasi geser.

Geser vertikal dapat diwakili oleh algoritma berikut:

y' = y + (Sy * x) 

di mana y adalah koordinat y asli, Sy adalah konstanta proporsionalitas, dan y' adalah hasil dari transformasi geser.

Transformasi geser horizontal dan geser vertikal dapat digabungkan ke dalam satu operasi menggunakan matriks 2-by-2.

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

Matriks 2 demi 2 yang menghasilkan shear berisi nilai berikut:

|1    1| 
|0    1|