Perubahan Struktur Data Struktur data titik 3D digunakan untuk keperluan menggambar objek ke layar komputer karena nilainya sudah disesuaikan dengan sistem koordinat pada layar komputer. Sedangkan struktur data vektor digunakan untuk melakukan transformasi terhadap objek sehingga bila objek gambar ditransformasikan. Langkah-langkah dalam mentransformasikan gambar objek adalah: -
Mengubah struktur data titik ke struktur data vektor
-
Menghitung transformasi
-
Mengubah struktur data vektor ke struktur data titik
-
Mengambar objek
Fungsi Point2Vector Fungsi ini digunakan untuk memindahkan tipe data titik 3D menjadi tipe data vektor 3D. Hal ini sangat berguna untuk operasianal matriks yang digunakan dalam melakukan transformasi dan pengolahan matriks pada grafika komputer. Implementasi dari fungsi Point2Vector adalah sebagai berikut:
vector3D_t point2Vector(point3D_t pnt) { vector2D_t vec; vec.v[0]=pnt.x; vec.v[1]=pnt.y; vec.v[2]=pnt.z; vec.v[3]=1; }
Fungsi Vector2 Point Fungsi ini digunakan untuk memindahkan tipe data vector 3D menjadi tipe data titik 3D. Hal ini sangat berguna untuk penyajian grafis setelah proses pengolahan matriks yang dikenakan pada objek 3D. Implementasi dari Vector2Point adalah sebagai berikut: point3D_t vector2point(vector3D_t vec) { point3D_t pnt; pnt.x=vec.v[0]; pnt.y=vec.v[1]; pnt.z=vec.v[2]; } Fungsi Vector2Point2D Fungsi ini digunakan untuk memindahkan tipe data vektor 3D menjadi tipe data titik 2D. Hal ini sangat berguna untuk penyajian grafis setelah proses pengolahan matriks yang dikenakan pada objek 3D. Implementasi dari fungsi Vector2Point2D adalah sebagai berikut point2D_t vector2point2D(vector2D_ t vec) { point2D_t pnt; Pnt.x=vec.v[0]; Pnt.y=vec.v[1]; }
Translasi Translasi adalah perpindahan objek dari titik P(x,y) ke titik P’(x’,y’) secara linier. Dalam translasi 3D diperlukan 3 parameter yaitu pemindahan ke arah sumbu x, pemindahan ke arah sumbu y, dan pemindahan ke arah sumbu z. Translasi (dx,dy,dx) di definisikan dengan:
x’=x+dx y’=y+dy z’=z+dz atau dapat dituliskan dengan:
Proses translasi dengan menggunakan operasi matriks dapat ditulis dengan:
Sehingga matriks transformasi dari translasi:
Implementasi fungsi untuk membuat matriks transformasi translasi adalah sebagai berikut: matrix3D_t translationMTX(float dx, float dy, float dz) { matrix3D_t trans=createIdentity(); trans.m[0][3]=dx; trans.m[1][3]=dy; trans.m[2][3]=dz; return trans; } Dalam implementasinya, fungsi transformasi di atas mengandung fungsi createIdentity(). Fungsi ini digunakan untuk membuat matriks identitas. Matriks identitas 4x4 adalah matriks yang nilai diagonal utamanya sama dengan satu dan lainya nol.
Implementasi fungsi untuk membuat matriks identitas adalah: Matriks3d_t createIdentity (void) { Matriks3D_t u; Int i, j; For ( i=0 ; i<4 ; i++) { For( j=0 ; j<4 ; j++ ) u.m[i][j]=0.; u.m[i][i]=1.; } Return u; }