Rotasi

Banyak aplikasi CAD menyediakan fitur yang memutar objek yang digambar di area klien. Aplikasi yang menyertakan kemampuan rotasi menggunakan fungsi SetWorldTransform untuk mengatur ruang dunia yang sesuai ke transformasi ruang halaman. Fungsi ini menerima penunjuk ke struktur XFORM yang berisi nilai yang sesuai. Anggota EM11, eM12, eM21, dan eM22 dari XFORM masing-masing menentukan, kosinus, sinus, sinus negatif, dan kosinus sudut rotasi.

Ketika rotasi terjadi, titik-titik yang merupakan objek diputar sehubungan dengan asal ruang koordinat. Ilustrasi berikut menunjukkan persegi panjang 20 demi 20 unit yang diputar 30 derajat saat disalin dari ruang koordinat dunia ke ruang koordinat halaman.

ilustrasi memperlihatkan dua ruang koordinat; masing-masing memiliki persegi panjang di lokasi yang berbeda dan dengan rotasi yang berbeda

Dalam ilustrasi sebelumnya, setiap titik dalam persegi panjang diputar 30 derajat sehubungan dengan asal ruang koordinat.

Algoritma berikut menghitung koordinat x baru (x ') untuk titik (x,y ) yang diputar oleh sudut A sehubungan dengan asal ruang koordinat.

x' = (x * cos A) - (y * sin A) 

Algoritma berikut menghitung koordinat y (y ') untuk titik (x,y ) yang diputar oleh sudut A sehubungan dengan asalnya.

y' = (x * sin A) + (y * cos A) 

Dua transformasi rotasi dapat digabungkan dalam matriks 2 per 2 sebagai berikut.

|x' y'| == |x y| * | cos A   sin A| 
                   |-sin A   cos A| 

Matriks 2 demi 2 yang menghasilkan rotasi berisi nilai berikut.

| .8660    .5000| 
|-.5000    .8660| 

Derivasi Algoritma Rotasi

Algoritma rotasi didasarkan pada teori penambahan trigonometri yang menyatakan bahwa fungsi trigonometri dari jumlah dua sudut (A1 dan A2 ) dapat diekspresikan dalam hal fungsi trigonometri dari dua sudut.

sin(A1 + A2) = (sin A1 * cos A2) + (cos A1 * sin A2) 
cos(A1 + A2) = (cos A1 * cos A2) - (sin A1 * sin A2) 

Ilustrasi berikut menunjukkan titik p diputar berlawanan arah jaga ke posisi baru p'. Selain itu, ini menunjukkan dua segitiga yang dibentuk oleh garis yang digambar dari asal ruang koordinat ke setiap titik dan garis yang digambar dari setiap titik melalui sumbu x.

diagram memperlihatkan asal, p dan p', dan dua segitiga

Menggunakan trigonometri, koordinat x titik p dapat diperoleh dengan mengalikan panjang hipotenus h dengan kosinus A1.

x = h * cos A1 

Koordinat y titik p dapat diperoleh dengan mengalikan panjang hipotenus h dengan sinus A1.

y = h * sin A1 

Demikian juga, koordinat x titik p' dapat diperoleh dengan mengalikan panjang hipotenus h dengan kosinus (A1 +A2 ).

x' = h * cos (A1 + A2) 

Akhirnya, koordinat y titik p' dapat diperoleh dengan mengalikan panjang hipotenus h dengan sinus (A1 +A2 ).

y' = h * sin (A1 + A2) 

Dengan menggunakan teori tambahan, algoritma sebelumnya menjadi sebagai berikut:

x' = (h * cos A1 * cos A2) - (h * sin A1 * sin A2) 
y' = (h * cos A1 * sin A2) + (h * sin A1 * cos A2) 

Algoritma rotasi untuk titik tertentu yang diputar oleh sudut A2 dapat diperoleh dengan mengganti x untuk setiap kemunculan (h * cos A1 ) dan dengan mengganti y untuk setiap kemunculan (h * sin A1 ).

x' = (x * cos A2) - (y * sin A2) 
y' = (x * sin A2) + (y * cos A2)