1 1.1
GeometriTiga-Dimensi dalamGrafikKomputer Manipulasi struktur tiga-dimensi Transformasi merupakan alat penting dalam menghasilkan obyek gambar tiga-dimensi. Transformasi digunakan untuk memindahan obyek di dalam suatu lingkungan, dan juga untuk membangun pandangan dua-dimensi atas lingkungan tersebut untuk permukaan tampilan. Bab ini berhubungan dengan transformasi tiga dimensi dasar, dan memperkenalkan beberapa transformasi perubahan-bentuk yang berguna dan geometri tiga-dimensi dasar yang akan kita gunakan dalam seluruh naskah. Oalam graftk komputer metode yang paling terkenal untuk menyajikan sebuah obyek adalah model jaring poligon. Penyajian ini akan diuraikan sepenuhnya dalam Bab 2. Yang kita perlukan pada tahap ini hanyalah bahwa entah bagaimana kita dapat menyajikan sebuah obyek sebagai sebuah daftar titik-titik dalam ruang tiga-dimensi. Kita melakukan ini dengan menyajikan permukaan sebuah obyek sebagai sekumpulan poligon planar terhubung di mana masing-masing poligon merupakan sebuah daftar titik-titik. Bentuk penyajian ini apakah eksak atau hanya aproksimasi tergatung pada sifat eksak obyeknya. Sebagai contoh, sebuah kubus dapat disajikan secara eksak dengan enam bujur sangkar. Sebaliknya, sebuah silinder hanya dapat diaproksimasi dengan poligon; misal empat persegi panjang untuk permukaan yang melengkung dan dua hexagon untuk bidang ujung. Jumlah poligon yang digunakan dalam aproksimasi menentukan bagaimana ketelitian obyek disajikan dan hal ini memiliki akibat dalam pemodelan biaya, penyimpanan dan rendering (pembentukan gambar) serta mutu. Ketenaran teknik pemodelan jaring poligon dalam graftk komputer tidak diragukan lagi karena
--
2
_u
_____.__
Pengantar Komputer Grafik
kesederhanaan sifat yang melekat dan perkembangan algoritma pembuatan bayangan yang tidak mahal untuk bekerja dengan model yang sedemikian rupa. Sebuah model jaring poligon terdiri dari struktur vertex, masing-masing vertex berupa titik tiga-dimensi yang disebut juga ruang koordinat. Selanjutnya akan kita per~atikan bagaimana vertex tersebut dihubungkan untuk membentuk poligon dan bagaimana poligon disusun ke dalam obyek yang lengkap. Akan tetapi untuk memulainya kita akan memperhatikan obyek yang hanya berupa sebuah himpunan vertex tiga-dimensi dan lihatlah bagaimana vertex ini ditransformasikan dalam ruang tiga-tlimensi dengan menggunakan transformasi linear.
1.2
Transformasi afinitas Transformasi afinitas tiga-dimensi (three-dimensional affine transformations) adalah transformasi yang mempengaruhi rotasi, penyekalaan (scaling), pemotongan (shear) dan translasi. Sebuah transformasi afinitas dapat dinyatakan oleh sebuah matriks dan sebuah himpunan transformasi afinitas yang dapat digabungkan ke dalam sebuah transformasi afinitas menyeluruh tunggaI. Secara teknis kita mengatakan bahwa sebuah transformasi afinitas merupakan kombinasi transformasi linear (rotasi, penyekalaan, dan pemotongan) yang diikuti dengan translasi (secara teknik, translasi bukan merupakan transformasi linear). Obyek yang ditentukan dalam sebuah sistem koordinat secara konvensional berupa sistem yang mengikuti aturan tangan-kanan. Sistem koordinat tiga-dimensi tangan-kanan dan tangan-kiri diperlihatkan pada Gambar 1.1. Sistem tangan-kanan merupakan konvensi matematika standar meskipun sistem tangankiri juga masih ada, digunakan dalam konteks khusus mengenai sistem pandang (viewing systems) dalam grafik komputer. Kita berhubungan dengan masalah ini dalam Bagian 3.1.1. Perbedaan antara kedua sistem tersebut dengan memperhatikan sumbuz diperlihatkandalam Gambar 1.1.Putarlahjari anda di sekitar sumbu z, dari sumbu x positif menuju sumbuy positif,memberikanarabz yang berbedauntuk ibujari andatergantungpada sistemmanayang digunakan. Kadang-kadang lebih menyenangkan untuk mendefinisikan obyek dalam sistem koordinat lokal mereka. Ada tiga alasan untuk hal ini. Pada saat sebuah obyek tiga-dimensi dimodelkan, adalah sangat membantu untuk membentuk vertex yang berhubungan dengan beberapa titik referensi obyek tersebut. Pada kenyataannya sebuah obyek kompleks bisa memiliki sejumlah sistem koordinat
. - - . - - - -- -. - - ~-
-
Geometri Tiga-{>imensicia/am Graftk Komputer
3
lokal, satu untuk masing-masing sub bagian. Bisa jadi bahwa obyek yang sarna tampak beberapa kali dalarn sebuah garnbar dan definisi dengan sebuah titik asal lokal merupakan cara yang bijaksana untuk menyusunnya. Misalnya sebuah obyek dengan menggunakan carnpuran translasi, transformasi rotasi dan penyekalaan selanjutnya dapat terlihat sebagai pentransformasian sistem koordinat lokal masing-masing obyek ke sistem koordinat. Akhirnya bila sebuah obyek dirotasi, ia 'akan lebih mudah jika rotasi ditentukan terhadap titik referensi lokal seperti sebuah sumbu simetri. (Filosofi ini diambil, misalny~, 'dalam standar grafik PRIGS, dimana pemrograrn menentukan struktur dalam sistem koordinat pemodelan. Transformasi pemodelan menentukan pemetaan dari ruang koordinat ini inenuju ruang koordinat tiga dimensi.) Sebuah himpunan vertex atau titik tiga-dimensi yang termasuk dalam sebuah obyek dapat ditransformasikan menuju himpunan titik yang lain dengan transformasi linear. Kedua himpunan titik tersebut masih dalam sistem koordinat yang sama. Notasi matriks digunakan dalam grafik komputer untuk menguraikan transformasi dan sesuai dengan konvensi dalam grafik komputer adalah agar memiliki titik atau vektor sebagai sebuah matriks baris, yang diikuti dengan matriks transformasi T. Dengan menggunakan notasi matriks, sebuah titik V ditransformasikan dengan translasi, penyekalaan dan rotasi sebagai: V' = V + D V'=VS V'=VR dimana D adalah vektor translasi dan S serta R merupakan matriks skala dan rotasi. Tiga operasi ini merupakan transformasi yang paling umum digunakan dalam grafik komputer yang memungkinkan mereka untuk diperlakukan dengan cara yang sama dan tergabung, kita menggunakan koordinat homogen. Secara efektif, kita meningkatkan ukuran ruang untuk membuat translasi sebuah transformasi linear, Dalarn praktek, ini memberi kita dengan sebuah sistem yang menyatu bagi spesifikasi transformasi. Dalam sistem homogen vertex V(x,y, z) dinyatakan sebagai
4
Pengantar Komputer Grajik
y
y
z .r (al
(h)
Gambar 1.1 (a) Sistem koordinat tangan-kanan dan (b) tangan-kiri.
V(X, Y, Z, w)
untuk sembarang faktor skala w *-O.Penyajian koordinat cartesian tiga dimensi menjadi: x =X/w y = Y/w z = Z/w dalam grafik komputer w selalu diambill dan penyajian matriks sebuah titik adalah
[x y z 1] Sekarang translasi dapat diperlakukan sebagai matriks perkalian, seperti halnya dua transformasi yang lain, dan menjadi
V'=VT
1
0 [x'
y'
z'
1] = [x
z
Y
1{Tx = [x y
z
1] T
0 Ty
0 0 1 T;
Geometri Tiga-Dimensi do/am Grafik Komputer
5
Spesifikasi ini secara tidak langsung menyatakan bahwa obyek tersebut ditranslasikan dalam tiga dimensi dengan menerapkan pemindahan Tx, Ty, dan Tz terhadap masing-masing vertex yang menentukan obyek tersebut. Notasi matriks m~rupakan sebuah alternatif yang menyenangkan untuk penulisan transformasi sebagai sebuah himpunan yang terdiri dari tiga persamaan: x' = x + Tx y' = y + Ty z' = z + T: Himpunan transformasi tersebut disel~saikan dengan penyekalaan dan rotasi. Pertama, penyekalaan: V'= VS s=
Sx
o
0
Sy
o [o
o o
Di sini Sx, Sy, dan Sz merupakan faktor penyekalaan. Untuk penyekalaan yang seragam, Sx = Sy = Sz;selain itu akan terjadipenyekalaandiferensialsepanjang sumbu ini yang mana faktor penyekalaan adalah non unity. Sekali lagi proses tersebut dapat dinyatakan secara lebih ringkas dengan sebuah himpunan yang terdiri dari tiga persamaan: x' = xSx y' = ySy z' = zS: yang digunakan untuk setiap vertex dalam obyek. Untuk merotasikan sebuah obyek dalam ruang tiga dimensi kita perlu menentukan sebuah sumbu rotasi. Hal ini dapat memiliki orientasi spatial dalam ruang tiga-dimensi, akan tetapi yang paling mudah adalah mempertimbangkan rotasi yang sejajar dengan salah satu sumbu koordinat. Matriks transformasi untuk rotasi yang searah jarum jam sekitar sumbuX, Y, dan Z masing-masing adalah:
o cose -sin e o
o sine cose o
~]
6
Pengantar Komputer Grafik
0 R
y
=
0 si ()
l=6
-sin () 0 cos () 0
1 0 0
0
sin () cos ()
R,
0 1 0
0 0
l -sr
cos66
]
]
Spesifikasi matriks sumbu Z adalah ekuivalen dengan himpunan tiga persamaan berikut ini: x' = x cos () - y sin () y' = x sin () + y cos ()
z' = z Gambar 1.2 mempertihatkan contoh transformasi ini yang beroperasi pada sebuah kubus dengan salah satu vertexnya berada pada sumbu titik asal. Inverse dari transformasi ini sering diperlukan. T -I diperoleh dengan menegasikan T", Ty, dan Tz. Penggantian S", Sy, dan Sz secara timbal batik memberikan S-I, dan penegasian
sudut rotasi menghasilkan
R-1
.
Himpunan rotasi, penyekalaan, dan translasi dapat dikalikan atau dikonketenasikan bersama-sama untuk menghasilkan net transformation matrix. Sebagai contoh jika: [x'
y'
z'
1]=[x
[x"
y"
z"
1] = [x'
Y
Z
I]M1
dan y'
z'
1] M1
maka matriks transformasi dapat dirangkaikan:
dan [x" y"
z"
1]=[x
y
Z I]M3
Meskipun translasi adalah komutatif, namun rotasi tidak dan
Geometri Tiga-Dimensi da/am Grafik Komputer
z
z
z
.t
Y
.t
-
"Y
,1/
(a)
(b)
Identity
Vniform scaling
0
o 0 1 [10o 0 0
.t
n
Y (c) ROlation (z-axis)
-0.::- 0.8660 0 o 0 I 0 0 00] 0 1 [Oo 05
o 1.5 () 0 001.50 I ["o 00 00 0]
o 1 0
z.&
z ...
7
Z
.t
If)
(d)
Translation
X scaling
[
Translation
and
rotation
2
0
0
0
()
1
0
0
o o
0 0
I 0 0 I
1 o o
]
() I 0
0 0 I
0 () 0
[ 51MJ 5(MJ 0
1
]
0'8M 0.5 0 -11.5 O.K66() o () I .BU.: 60.3 0
[
0 0 0 1
]
Gambar 1.2 Contoh transformasi afinitas pada sebuah kubus yang terletak dengan salah satu edge sepanjang sumbu z.
R) R2 *R2R) Sebuah matriks transformasi
umum dapat merupakan
bentuk
8
Pengantar Komputer Grajik
~] Sub-matriks A kiri atas ukuran 3 x 3 adalah rotasi net dan penyekalaan (tx, ty, tz) menghasilkan translasi net. Penggunaan khusus matriks transformasi dalam grafik komputer adalah untuk membuat gambar yang berisi contoh obyek yang telah ditentukan sebelumnya. Sebuah contoh dua gambar, dibuat dari contoh obyek yang sarna, diberikan dalam Gambar 1.3. Efek ketepatan dari transformasi tersebut tidak penting; dua gambar harus dibandingkan sedemikian rupa sehingga secara umum terasa efek trans formasi tersebut diperoleh. Tiga buah obyek yang menjadi pokok persoalan transformasi, dari posisi yang dipusatkan pada titik asal, sebagai berikut:
(1) Kubus yang pertama: Skala Rotasi ,
Translasi Matriks komposit
(0.4, 0.4, 0.4) (Sx, Sy, Sz) (0, 0, 0) (berlawanan putaran jarum jam dalam derajad sekitar sumbu X, Y, dan Z)
(0.5,1.7, -0.6) o.4 0.0 0.0 0.5
r (2) F: Skala Rotasi Translasi Matriks komposit
0.0 0.4 0.0 1.7
(Tx. Ty, Tz)
0.0 0.0 004 -0.6
0.0 0.0 0.0 1.0
0.0 0.0 1.0 0.0
0.0
]
(1,1,1) (0, 0, 0) (1. 7, -0.4, 0)
1.0 0.0 0.0 1.7
r
0.0 1.0 0.0 -0.4
0.0 0.0 1.0
]
Geometri IJga-Dimensi da/am Graftk Komputer
9
Gambar 1.3 Dua garnbar yang dibuat dengan menggunakan contoh obyek yang sarna (lihat naskah untuk rincian transfonnasi).
(3) Kubus kedua Skala Rotasi Translasi
(0.2,0.2, 1) (0, 0, 0) (0.5, 1.7,0.8)
Matriks komposit
[
0,2 0.0 0.0 0.5
0.0 0.2 0.0 1.7
0.0 0.0 1.0 0.8
O.O 0.0 0.0 1.0
J
10
Pengantar Komputer Grajik
(4) Silinder Skala Rotasi Translasi
(0.9,0.9, 1) (0, 0, 0) (0, 0, 0)
0.0 Matriks komposit
0.0 0.0 [90.0
0.9 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 1.0 00]
Untuk perbandingan, data gambar yang kedua (saat ini tanpa matriks komposit) ditentukan: (I) Kubus pertama Skala Rotasi Translasi
(0.4, 0.4, 0.4) (0, 0, 45) (0.5, 1.7, -0.6)
(2) F: Skala Rotasi Translasi
(I, 1, 1) (0, 0, 180) (1.7, -0.4, 0)
(3) Kubus kedua Skala Rotasi Translasi
(0.2, 0.2, 1) (0, 0, 0) (0.5, 1.7,0.8)
(4) Silinder: Skala Rotasi Translasi
(0.9,0.9, 1) (0, 0, 0) (0, 0, 0)
Kemampuan mengkonketenasikan transformasi untuk membentuk net transformasi matrix sangat berguna, karena ia memberikan sebuah spesifikasi matriks tunggal bagi transformasi linear. Sebagai contoh, perhatikan rotasi sebuah benda sekitar garis sejajar dengan sumbu Z yang lewat melalui titik (Tx, Ty,0) dan juga melewati salah satu vertex dari obyek tersebut. Di sini secara tidak langsung kita menyatakan bahwa obyek tersebut tidak berada pada titik asal (origin) dan kita
Geometri Tiga-Dimensi dalam Grafik Komputer
II
ingin menerapkan rotasi sekitar titik referensi dalam obyek tersebut. Kita tidak dapat hanya menerapkan matriks rotasi, karena ini ditentukan terhadap titik asal dan sebuah obyek tidak dapat ditempatkan pada titik asal akan berotasi dan bertranslasi
-
biasanya bukan efek yang diinginkan. Sebagai gantinya kita hams
menurunkan net transfonnasi matrix sebagai berikut: (1) translasikan obyek tersebut menuju titik asal, (2) gunakan rotasi yang diinginkan, dan (3) translasikan obyek tersebut kembali ke pisisinya semula.
Matrikstransformasinetadalah: T ,RT 2 =
0
sin0
0
0
0
o
1
0
0 -Tx
0 0 -Ty
1 0
cosO 0 0
0 1 0
1 0 Ty
0 1 0
[1
:] [
-r cos6
] [t, sinO
=
[
]
0
cosO 0 -sin () 1 0 0 0 (-Txcos 0 +cos6 Tysin 0 + Tx) (- Txsin () - Tycos 0 + Ty)
n
Proses ini diperlihatkan pada Gambar 1.4 dimana () sebesar 30°,
1.3
Transformasi untuk mengubah sistem koordinat Sampai saat ini ki~ telah membahas transfonnasi yang beroperasi pada titik yang dinyatakan relatif terhadap salah satu sistem koordinat tertentu. Dalam banyak konteks pada grafik komputer kita perlu untuk menurunkan transfonnasi yang mengambil titik dari salah satu sistem koordinat menuju sistem koordinat yang lain. Salahsatu konteks initelah dikemukakan- penggunaansistem koordinatyang berupa lokalatau khusus terhadapobyek. Perhatikan dua sistem koordinat dengan sumbu sejajar, yakni, sistem tersebut hanya berbeda dengan adanya translasi. Jika kita ingin mentransfonnasi titik yang sekarang dinyatakan dalam sistem 1 ke sistem 2 kemudian kita menggunakan inverse transfonnasi tersebut yang menempati titik asal sistem 1 ke sistem 2. Jadi,
12
Pengantar Komputer Grafik
(a) y
t
(b) Y
P
D x
I
(c) y +
Cd) 'T
.
x
I
)
x
V ) x
Gambar 1.4 Tahap pembentukan rotasi pada sebuah obyek sekitar salah satu vertexnya sendiri. Rotasi tersebut sekitar sumbu sejajar dengan sumbu Z pada titik (Tx, Ty,.0). Sebuah proyeksi duadimensi (dengan arah sumbu Zkeluar kertas) diperlihatkan agarjelas. (a) Obyek yang original pada (Tx, Ty, 0). (b) Translasikan menuju titik asal. (c) Rotasikan sekitar titik asal. (d) Translasikan ke P(Tx, Ty,0).
sebuah titik (x, y, z\ I) dalam sistem I transfonnasi menuju sebuah titik (x', y', z', I) dengan: o 1 [x', y', z', 1] = [x, y, z, 1] ~ o -Tx -Ty ~]
= T12
[
.
= (T21)-1 Di mana transfonnasi yang mentranslasikan titik asal pada sistem I ke sistem 2 (dimana titik tersebut masih dinyatakan relatif terhadap sistem I). Cara lain untuk meletakkannya adalah dengan menyatakan bahwa transfonnasi yang umumnya diperlukan adalah inverse transformasi sumbu lama ke sumbu bam dalam sistem koordinat yang mutakhir. Hal ini merupakan hasil yang penting karena kita biasanya menemukan transformasi antara sistem koordinat dengan memperhatikan transformasi yang ber. operasi pada titik asal dan sumbu. Dalam kasus sistem pandang, perubahan sistem
Geometri Tiga-Dimensi da/am Grafik Komputer
13
koordinat melibatkan translasi dan rotasi, dan kita memperoleh transformasi yang diperlukan dalam cara ini dengan mempertimbangkan kombinasi rotasi dan translasi.
1.4
Transformasi perubahan bentuk struktur Transformasi linear di atas adalah salah satu dari memindahkan sebuah obyek (rotasi dan translasi) atau menskala obyek. Penyekalaan seragam (uniform scaling) dapat mempertahankan bentuk. Dengan menggunakan nilai Sx, Sy, dan Sz yang berbeda maka obyek direnggangkan atau dimampatkan sepanjang sumbu koordinat tertentu. Dalam bagian ini himpunan transformasi yang merubah bentuk obyek diperkenalkan. Hal ini diuraikan sepenuhnya oleh Barr (1984) dimana mereka menamakan "perubahan bentuk global". Perubahan bentuk tertentu yang diberikan secara rinci dalam buku ini adalah peruncingan (tapering), pemilinan (twisting), dan pembengkokan (bending). Barr menggunakansebuahrumusyang mendefmisikantransformasi:
x = FAx) y = F.,.(y) z = F~(z) dimana (x, y, z) adalah sebuah vertex dalam benda padat yang tidak berubah bentuk dan (Z, Y, Z) adalah vertex yang berubah bentuk. Dengan menggunakan notasi ini transformasi penyekalaan di atas adalah:
x = SAx) y = Sy(y) Z = S~(z) Peruncingan mudah dikembangkan dari penyekalaan. Kita pilih sebuah sumbu peruncingan dan membedakan skala dua komponen yang lain, menetapkan fungsi peruncingan sepanjang sumbu ini. Jadi untuk meruncingkan sebuah obyek sepanjang sumbu Z:
x = rx Y = ry Z=Z
14
Pengantar Komputer Grafik
dim ana
r
=j(z)
adalah fungsi peruncingan yang linear atau tidak linear. Dengan demikian transformasi menjadi fungsi r. Yakni, kita mengubah transformasi tergantung pada dimana ruang tersebut digunakan. Efeknya adalah kita menskala sebuah transformasi penyekalaan. Pemilinan sumbu secara global dapat dikembangkan seperti sebuah rotasi diferensial, seperti halnya pada peruncingan yang merupakan penyekalaan diferensial Untuk memilin sebuah obyek sekitar sumbu Z kita gunakan:
x = x cos (] - Y sin (] y = x sin (] + Y cos (] =z
Z
dimana (]
=f(z)
danj'(z) menentukan tingkat pemilinan per satuan panjang sepanjang sumbu Z. Pembengkokan linear secara global sepanjang sebuah sumbu merupakan sebuah transformasi komposit yang terdiri dari suatu daerah bengkokan dan daerah di luar daerah bengkokan dimana perubahan bentuk berupa sebuah rotasi atau translasi. Barr mendetinisikan sebuah daerah bengkokan sepanjang sumbu Y sebagai: Ymin ~ Y ~ Ymax
jari-jari lengkungan dari belokan tersebut adalah 1/k dan pusat belokan berada pada y = yO.Sudut belokan sebesar: (]
= k(y' -
Yo)
dimana y'=
Ymin
Y ~ Y min
Y
Ymin < Y < Ymax
{ Yrilax
Y ;;=Ymax
Geometri Tiga-Dimensi da/am Grajik Komputer
15
Transformasi perubahan bentuk ditentukan oleh: X=x y
Z
- sin e(z - Ilk) + Yo = - sin e(z - Ilk) + Yo + { - sin e(z - Ilk) + Yo + cas e(z - Ilk) + Ilk =
Ymin ~ Y ~ Ymax
cos e(y cos e(y
-
Ymin)
Y
-
Ymax)
Y > Y max
<
Y min
Ymin ~ Y ~ Ymax
cas e(z
-
Ilk) + Ilk + sin e(y
-
Ymin)
Y < Y min
{ cas e(z
-
Ilk) + Ilk + sin e(y
-
Ymax)
Y > Y max
Gambar 1.5 memperlihatkan sebuah contoh untuk masing-masing dari transformasi ini. Perubahan bentuk pada sebuah kubus adalah merupakan pencerminan intuisi dari beberapa efek dan beberapa transformasi diterapkan pada teko teh Utah. Plat 1 memperlihatkan sebuah versi pembentukan gambar pada sebuah abyek jaring paligon (sebuah silinder yang berambak) yang telah dipilin dan diruncingkan. Perubahan bentuk tidak linear, yang tidak ada batasan secara umum tidak dapat diterapkan pada jaring poligon. Salah satu masalah adalah batasan hubungan antar vertex. Sebagai contoh, kita tidak dapat memilin sebuah kubus, yang digambarkan sebagai enam permukaan tanpa batas, dan mempertahankan sebuah struktur yang cocok untuk rendering. Masalah yang lain adalah bahwa perubahan .
bentuk dimanavertex bergeraksecaraterpisahmemilikiefek berkurangnyaresolusi model yang original, yang akan meningkat menuju penurunan mutu dalam bayangan hitam "aliasing" edge (nanti akan dibahas secara rinei). Jadi resolusi poligonal suatu model obyek membatasi sifat perubahan bentuk dan hal ini hanya dapat ditanggulangi dengan membagi-bagi jaring yang original sebagai sebuah fungsi "penyederhanaan" dari perubahan bentuk.
1.5
Vektor dalam grafik komputer Vektor digunakan dalam bermacam-macam konteks dalam grafik komputer. Bagian ini mencakup operasi dasar yang kemudian digunakan di seluruh naskah 101. Vektor adalah sebuah entitas yang memiliki be saran dan arah. Sebuah vektor tiga-dimensi adalah triple:
16
Pengantar Komputer Grajik
Original
objects
Tapering
Twisling
Bending
Gambar 1.5 Transformasi perubahan bentuk struktur.
dimana masing-masing komponen Viadalah skalar. Dalam grafik komputer kita juga tertarik pada sebuah besaran yang disebut sinar (ray) (secara matematik dikenal sebagai sebuah segmen garis terarah), yang memiliki posisi, besaran dan arah. Jika kita membayangkan sebuah sinar se-
Geometri Tiga-Dimensi da/am Grafik Komputer
17
bagai sebuah garis fisik dalam ruang berdimensi tiga, maka posisinya adalah posisi ujung garis tersebut, dan arahnya adalah arah garis tersebut. Sebuah sinar dapat ditentukan oleh dua titik atau oleh sebuah titik tunggal, dan sebuah vektor. Ji~a titik akhir dari sinar tersebut masing-masing adalah (XI,y., ZI)dan (X2,Y2,Z2), maka vektor tersebut ditentukan oleh: V
1.5.1
= (X2 -
xI. Y2
- Yb
Z2
-
Zl)
Penambahanvektor Penambahan dua buah vektor V dan W, misalnya, dapat didetinisikan sebagai:
x=V+w
= (XI.
x:2' X3)
= (VI + WI. v:2 + w:2' v3 + w3)
Secara geometrik, hal ini diterjemahkan sebagai berikut. "ujung" vektor W ditempatkan pada "kepala" vektor V dan X adalah vektor yang dibentuk oleh penggabungan ujung vektor V ke kepala vektor W. Hal ini diperlihatkan pada Gambar 1.6 untuk sepasang vektor dua-dimensi bersama-sama dengan sebuah alternatif, namum ekivalen, interpretasi.
1.5.2
Paniang vektor
Besar atau panjang vektor dari sebuah vektor didetinisikan sebagai: IVI = (V12 +
V22
+
V32)1!2
Gambar 1.6 Dua buah interpretasi geometrik penjumlahan dua buah vektor.
18
Pengantar Komputer Grafik
dan kita menginterpretasikan ini secara geometrik sebagaijarak dari ujungnya ke kepalanya. Kita menormalisasikan sebuah vektor untuk menghasilkan sebuah vektor satuan, yakni sebuah vektor yang panjangnya sarna dengan satu. Versi ternormalisasi dari vektor Vadalah:
v u=TVT yakni sebuah vektor panjang satuan yang memiliki arah yang sarna sebagaimana V. Kini kita dapat menggunakan U sebagai sebuah arah. Sebagai catat bahwa kita dapat menulis:
v
=
Ivlu
yang menyatakan bahwa suatu vektor ditentukan oleh besarannya dikalikan dengan arahnya.
1.5.3
Vektornonnal dan perkaliansilang Dalam grafik komputer pemrosesan yang dapat dipertimbangkan adalah dilaksanakan dengan menggunakan vektor normal terhadap sebuah permukaan. Sebagai contoh, dalam sebuah model jaring poligon (Bab 2) sebuah vektor normal digunakan untuk menyatakan orientasi pada sebuah permukaan pada saat membandingkan hal ini dengan arah cahaya. Perbandingan yang demikian ini digunakan dalam model pencerminan (refeksi) untuk menghitung intensitas cahaya yang dipantulkan dari suatu permukaan. Semakin kecil sudut antara vektor cahaya dan vektor normal terhadap permukaan tersebut, maka akan semakin tinggi intensitas cahaya yang dipantulkan dari permukaan tersebut (Bab 4). Sebuah vektor normal terhadap sebuah poligon dihitung dari tiga vertex poligon tersebut (non-collinear). Tiga vertex menentukan dua vektor VI dan V2 (Gambar ] .7) dan vektor normalnya terhadap poligon diperoleh dengan menggunakan perkalian silang ini: Np=VIXV2 Perkalian
silang dari dua buah vektor
V dan W didefinisikan
sebagai:
Geometri Tiga-Dimensi da/am Grafik Komputer
19
X=VxW
=(VZW3 -
v3wz)i + (V31V1-
VIIV3)j
+
(VtW2
- V21\"1)k
dim ana i, j, dan k adalah vektor-vektor satuan standar:
i = (1.0,0) j = (0, 1,0) k = (0,0, 1) yakni, vektor yang diorientasikan sepanjang sumbu koordinat yang menentukan ruang dimana vektor tersebut dilekatkan. Secara geometrik, sebuah perkalian silang, yang secara tidak langsungdibahas, adalah sebuah vektor yang berorientasi normal terhadap bidang yang memiliki dua vektor yang membentuk perkalian silang. Pada saat penentuan permukaan normal sebuah poligon, perkalian silang harus menunjuk keluar terhadap obyek tersebut. Dalam sistem koordinat tangan-kanan vektor perkalian silang ditentukan oleh aturan tangan-kanan. Jika dua jari yang pertama dari tangan kanan anda menunjuk arah V dan W maka arah X ditentukan oleh arah ibujari anda. Masalah timbul pada saat transformasi diterapkan pada permukaan normal dalam model jaring poligon. Pada awal bab ini kita telah membahas transformasi afinitas yang beroperasi pada vertex dari obyek yang ditentukan secara poligon. Dalam sebuah obyek jaring poligon adalah memungkinkan untuk menghitung semua vektor normal yang diperlukan hanya sekali saja dan menyimpannya sebagai bagian basis-data obyek. Pengertian dari prosedur ini menjadi jelas jika anda mempertimbangkan bahwa obyek kompleks dapat dinyatakan oleh puluhan bahkan ratusan dari ribuan poligon. Kemudian vektor diterapkan pada transformasi pemodelan (translasi, rotasi, penyekalaan dan lain sebagainya) seperti hal-
Gambar 1.7 Perhitungan vektor normal terhadap sebuah poligon.
20
Pengantar Komputer Grafik
t N,
Gambar 1.8 Efek penyekalaan diferensial pada permukaan normal: Sx = 2, Sy = I, dan Sz = I.
nya vertex poligon. kita lebih senang untuk menghitung kembali vektor normal setiap kali vertex ditransformasikan. Akan tetapi, perhatikan Gambar 1.8 yang memperlihatkan sebuah obyek dua-dimensi yang diterapkan pada transformasi afinitas, namun anisotropic. Hanya transformasi afinitas anisotropic saja yang cenderung kita perhatikan dalam grafik komputer adalah penyekalaan diferensial. Gambar 1.8 memperlihatkan transformasi penyekalaan dimana: Sx=n Sy= 1 Sz= 1 Ini dapat dilihat secara intuisi dari diagram tersebut bahwajika penyekalaan yang sarna diterapkan pada komponen normal permukaan, kita akhiri dengan vektor yang secara umum bukan lagi normal permukaan. Ini dapat diperlihatkan (Glassner, 1990) bahwa transformasi yang diperlukan untuk mempertahankan orientasi vektor adalah:
Geometri Tiga-Dimensi da/am Grafik Komputer
21
dengan demikian nonnal permukaan yang ditransfonnasikan N' ditentukan oleh: ' (N'x' N'Y' 'N .t)
_ Nx N y -
(-,-Sx
No
~ Sy' Sz
)
Pertimbangan ini sarna dengan yang diterapkan terhadap vertex nonnal (Bab 5) yang juga hanya dihitung sekali saja dan disimpan dalam basis data obyek. Jika pennukaan berupa sebuah permukaan parametrik bikubus (Bab 6), kemudian orientasi vektor nonnal berubah terus menerus pada permukaan. Kita hitung lagi normal pada sembarang titik (u, v) pada pennukaan tersebut dengan menggunakan perkalian silang. Hal ini dilakukan dengan pertama-tama menghitung vektor tangent dalam dua arah parametrik. (Prosedur yang dikemukakan di sini untuk sekedar melengkapi saja, rincian yang lengkap diberikan dalam Bab 6). Untuk sebuah permukaan didefinisikan sebagai Q(u, v) kita peroleh:
o
&; Q(u,
o
v) dan
t;;;Q(u, v)
Kemudian kita definisikan:
Ns
1.5.4
= oQ Ou x oQ Ov
Veldor nonnal dan perkaliantitik Penggunaan perkalian titik yang paling urnurn dalam grafik komputer adalah untuk memberikan ukuran sudut antara dua vektor, dimana salah satu vektor tersebut adalah vektor nonnal terhadap sebuah permukaan atau kelompok permukaan. Penerapan yang umum adalah untuk bayangan (sudut antara vektor arah cahaya dan pennukaan nonnal) dan pengujian jarak penglihatan (sudut antara sebuah vektor pandang dan sebuah vektor normal). Perkalian titik vektor V dan W didefinisikan sebagai:
22
Pengantar Komputer Grafik
x=v.w Gambar 1.9 memperlihatkan dua vektor. Dengan menggunakan aturan cosinus kita peroleh:
Iv - wl2 = Ivl2 + Iwl2
-
21Vllwi cos 8
dimana () adalah sudut antara vektor tersebut. Juga dapat diperlihatkan bahwa:
IV - Wl2 = V2 - 2VW + Iwl2 jadi:
memberikan:
v.w cose = lVilWI atau, sudut antara dua vektor adalah perkalian titik dari versi normalisasinya . Kita dapat menggunakan perkalian titik untuk memproyeksikan sebuah vektor kepada vektor yang lain. Pertimbangkan vektor satuan V. Jika kita memproyeksikan suatu vektor W pada V (Gambar 1.10) dan ambil hasilnya yang berupa X, maka kita mempunyai persamaan: Ixl = Iwicos e
v.w =IWi'v'w I , l
= v. n: karena V adalah vektor satuan. Maka perkalian titik antara V dan W adalah panjang proyeksi W pada V. Sifat dari perkalian titik yang digunakan dalam grafik komputer adalah tandanya. Karena hubungannya dengan cos (Jperkalian titik V dan W (dimana V dan Wadalah sembarang panjang) memiliki tanda sebagai berikut:
Geometri Tiga-Dimensi ria/am Grafik Komputer
23
Gambar 1.9 Perkalian titik dua buah vektor dihubungkan dengan kosinus sudut antara mereka: V.W cos9=II1IHf
v.w>o jika 8 < 90° V.W =0 jika8 = 90° V.W
90° 1.5.5
Veldor yang berhubungan dengan veldor nonnal Ada tiga buah vektor penting yang berhubungan dengan normal permukaan. Mereka adalah vektor arab cahaya, L, vektor pencerminan atau vektor cermin, R, dan vektor pandang, V. Vektor arah cahaya L adalah sebuah vektor yang memiliki arah yang ditentukan oleh garis dari ujung normal permukaan menuju sumber cahaya, yang mana dalam konteks bayangan yang sederhana didefinisikan sebagai sebuah titik tunggal. Vektor ini diperlihatkan pada Gambar l.ll(a). Vektor pencerminan R diberikan oleh arah cahaya yang dipantulkan dari suatu permukaan karena cahaya datang sepanjang arah L. Kadang-kadang disebut arah cermin, optik geometrik mengatakan kepada kita bahwa sudut yang keluar sarna dengan sudut datang seperti yang diperlihatkan pada Gambar 1.11(b). Pertimbangkan konstruksi yang diperlihatkan pada Gambar 1.12.Ini memperlihatkan: R = Rl + Rz Rl =- L + R2 jadi:
R = 2R2 - L
24
Pengantar Komputer Grajik
Gambar
1.10
= V.
IX!
Dari Persamaan
W adalah panjang proyeksi W pada V:
1.1:
R2=(NoL)N dan R = 2(N 0L)N - L
Gambar 1.11(c) memperJihatkan vektor pandang V. Sebagai catatan bahwa vektor ini memiliki orientasi arbitrase; kita pada umumnya tertarik pada komponen cahaya yang datang dengan arah L yang dipantulkan sepanjang V. Hal ini secara umum akan tergantung pada dua buah sudut
Prayek, catatan, dan saran 1.1 Gambar bingkai-kawat Implementasikan sebuah program (Iihat lampiran B) yang memungkinkan seorang pemakai menyusun sebuah gambar yang berisi sejumlah obyek yang dilihat (dengan menggunakan sistem pandangan I, Bab 3) dalam bentuk bingkai kawat.
Geometri Tiga-Dimensi da/am Grafik Komputer
25
1.2 Animasi sebuah gambar bingkai-kawat Perluas program pada Proyek 1.1 yang mencantumkan sebuah fasilitas animasi yang menampilkan sebuah gambar, tambahkan elemen matriks transformasi dan tampilkan sebuah gambar yang baru dan seterusnya. Ini adalah teknik dasar yang digunakan oleh program "logo yang jungkir balik" yang terlihat padajudul TV yang berurutan. Kini sediakan sebuah fasilitas animasi untuk "kamera virtual" yang menyebabkan parameter sistem pandang juga dianimasi. 1.3 Interaksi dengan obyek bingkai-kawat (*) Tulislah sebuah program pemodef1n sederhana yang memungkinkan seorang pemakai memilih sebuah vertex dari sebuah model bingkai-kawat yang ditampilkan pada layar dan tariklah vertex tersebut sekitar ruang tiga-dimensi untuk mengubah bentuk obyek tersebut. Proyek tersebut menyoroti .Sejumlahmasalah dengan jenis interaksi ini. Pertama anda mungkin hanya akan memiliki akses pada sebuah piranti "locator" dua-dimensi, dan ini harus digunakan sebagai pengambil tiga-dimensi untuk memilih sebuah vertex dan sebagai sebuah "locator" tiga-dimensi untuk memindah-mindahkan di sekeliling vertex tersebut. Pemilihan vertex dapat disederhanakan menjadi masalah dua-dimensi jika vertex tersebut tidak saling cakup dalam ruang layar. Dengan memelihara daftar posisi (x",y,)dari masing-masing vertex dalam obyek tersebut, untuk pemandangan tertentu, bersamaan dengan tolerat1si spatial memungkinkan vertex dipilih dalam ruang layar dua-dimensi. Untuk memindah-mindahkan vertex di sekelilingnya, locator dua-dtmensi perlu digunakan dalam ruang tiga-dimensi. Pendekatan yang nyata adalah untuk menggunakan, katakan, sebuah mouse dalam dua pola operasional; salah satunya adalah pola x, y yang terangkai normal, yang akan memungkinkan perpindahan dalam sebuah bidangxw,Yw,pola yang lain mensimulasikan sebuah potensiometer dan memungkinkan perpindahan ke atas dan ke bawah pada sumbu Zw.(Dengan memperluas penggunaan sebuah mouse untuk mengakomodasi grafik tiga-dimensi merupakan pokok bahasan yang relatif kurang digali. Piranti locator tigadimensi ada akan tetapi mereka tidak umum.) Dengan memindah-mindahkan vertex di sekelilingnya berarti melakukan gambar ulang, katakan dalam warna yang berbeda, edge ini bergabung pada
26
Penganlar Komputer Grafik
Point~ light 1\ source \ L
N
(a)
(b)
(c)
Gambar 1.11 Vektor yang berhubungan dengan vektor normal. (a) L, vektor arah cahaya. (1)).R, vektor pencerminan. (c) V, vektor pandang, adalah vektor suatu orientasi.
Geometri Tiga-Dimensi dalam Grafik Komputer
27
N L
R
Gambar 1.12 Konstruksi untuk vektor pencerminan R.
vertex tersebut. Jika "workstation" anda cukup andal maka anda dapat mengimplementasikan putaran umpan balik animasi ini dengan menggambarkan lagi seluruh obyek. Jika tidak maka utilitas penggambaran-garis dua-dimensi perlu dianimasi dalam urutan "hapus-gambar", di bawah kendali sebuah Raster_op exclusive-or dengan demikian garis yang bergerak tidak akan menghapus garis yang diam. Penggeser vertex perlu dioperasikan dalam dua pola, gerak dan tetap. Lihat Foley dan kawan-kawan (1989) untuk rincian sepenuhnya pada teknik interaktif dua-dimensi. 1.4 Urutan animasi dan transformasi Barr Hasilkan sebuah urutan animasi yang memperlihatkan sebuah model, katakan, sebuah perubahan bentuk benda padat yang persegi panjang. Lakukan hal ini dengan mengendalikan sebuah parameter tunggal dalam salah satu transformasi Barr. Selidikilah kemungkinan pengendalian dua parameter, katakan pembelokan dan pemilinan secara serentak.