|
| |
|
|
|
|
Matematika di balik penggambaran 3 dimensi
Minggu, 7 Juni 2009
Menggambar bentuk 3 dimensi ke dalam layar komputer 2 dimensi bukanlah hal yang sukar. Rumus matematika di balik penggambaran 3 dimensi sangatlah mudah dipahami. Jika anda telah mempelajari aritmatika vektor dan matriks, membuat 3D engine adalah hal yang sangat mudah.
Pertama, kita perlu mendefinisikan sebuah ruang Cartesian 3 dimesnis, di mana posisi dari sebuah objek dapat dideskripsikan dengan nilai dari tiga variabel (x,y,z). Asumsikan bahwa di dalam ruang Cartesian ini, ada dua buah titik A dan B, seperti pada gambar di atas. Sementara itu objek E menggambarkan posisi dari mata (atau kamera) pengamat.
Objek E memiliki atribut yang berupa 1 vektor posisi dan 3 vektor orientasi. Vektor posisi tersebut mendeskripsikan letak dari pengamat, sementara vektor orientasi mendeskripsikan arah kanan ( Vx ), atas ( Vy ) dan depan ( Vz ) menurut pengamat relatif terhadap ruang Cartesian yang telah didefinisikan.
Karena yang ingin kita lakukan adalah menggambar garis AB di dalam sebuah layar 2 dimensi seperti pada gambar di atas, kita memerlukan sebuah cara untuk mendapatkan Koordinat Layar dari titik A dan B. Koordinat Layar tersebut harus dihitung berdasarkan posisi tiap titik di ruang Cartesian 3 Dimensi, posisi pengamat dan orientasi pengamat.
Nilai-nilai dari koordinat objektif asal (sistem xyz), harus terlebih dahulu ditransformasikan ke dalam koordinat subjektif pengamat (sistem uvr). Dalam sistem koordinat subjektif ini, u merepresentasikan jarak objek ke arah kanan pengamat, v merepresentasikan jarak objek ke arah atas pengamat dan r merepresentasikan jarak objek ke arah depan pengamat.
Kemudian kita perlu mengalikan hasilnya dengan sebuah skala agar hasil render pas di layar 2 dimensi kita. Posisi dari titik A dan B di dalam layar 2 dimensi, akan direpresentasikan dalam A(sxA,sxA) dan B(sxB,sxB). Perlu diingat bahwa kebanyakan objek serupa layar dalam programming seperti image canvas atau layar komputer biasanya merepresentasikan posisi tiap pixel menggunakan bilangan bulat positif. Anda perlu melakukan operasi translasi tambahan pada A(sxA,sxA) dan B(sxB,sxB) agar pas di layar anda.
Pembaca : 490 Pembaca per hari : 1.07 Komentar : 0
|
|
|
|
| Komentar |
| |
| Tidak ada komentar untuk entri ini |
|
|
|
|
|