Mengapa Koordinat Homogen digunakan dalam Grafik Komputer?
Apa yang menjadi masalah jika Koordinat Homogen tidak digunakan dalam transformasi matriks?
Mengapa Koordinat Homogen digunakan dalam Grafik Komputer?
Apa yang menjadi masalah jika Koordinat Homogen tidak digunakan dalam transformasi matriks?
Jawaban:
Mereka menyederhanakan dan menyatukan matematika yang digunakan dalam grafik:
Mereka memungkinkan Anda untuk mewakili terjemahan dengan matriks.
Mereka memungkinkan Anda untuk mewakili divisi dengan kedalaman dalam proyeksi perspektif.
Yang pertama terkait dengan geometri affine. Yang kedua terkait dengan geometri projektif.
Ada dalam nama: Koordinat homogen baik ... homogen. Menjadi homogen berarti representasi seragam dari rotasi, terjemahan, penskalaan, dan transformasi lainnya.
Representasi yang seragam memungkinkan untuk optimasi. Perangkat keras grafis 3D dapat dikhususkan untuk melakukan perkalian matriks pada matriks 4x4. Bahkan dapat dikhususkan untuk mengenali dan menghemat perkalian dengan 0 atau 1, karena itu sering digunakan.
Tidak menggunakan koordinat homogen mungkin menyulitkan untuk menggunakan perangkat keras yang sangat optimal secara maksimal. Program apa pun mengakui bahwa instruksi yang dioptimalkan dari perangkat keras dapat digunakan (biasanya kompiler tetapi kadang-kadang hal-hal lebih rumit) untuk koordinat homogen akan mengalami kesulitan dengan mengoptimalkan untuk representasi lain. Ini akan memilih instruksi yang kurang dioptimalkan dan karenanya tidak menggunakan potensi perangkat keras.
Karena ada panggilan untuk contoh: Sony PS4 dapat melakukan perkalian matriks besar-besaran. Itu sangat bagus sehingga terjual habis untuk beberapa waktu, karena kelompok-kelompok itu digunakan alih-alih komputer super yang lebih mahal. Sony kemudian menuntut agar perangkat keras mereka tidak boleh digunakan untuk keperluan militer. Ya, komputer super adalah peralatan militer.
Sudah menjadi hal biasa bagi para peneliti untuk menggunakan kartu grafis untuk menghitung perkalian matriks mereka walaupun tidak ada grafik yang terlibat. Hanya karena besarnya lebih baik di dalamnya daripada CPU untuk tujuan umum. Sebagai perbandingan, CPU multi-core modern memiliki urutan 16 pipa (x0.5 atau x2 tidak terlalu penting) sementara GPU memiliki urutan 1024 pipa.
Ini bukan inti daripada pipa yang memungkinkan untuk pemrosesan paralel yang sebenarnya. Core bekerja pada utas. Utas harus diprogram secara eksplisit. Pipa bekerja pada level instruksi. Chip dapat memparalelkan instruksi secara lebih kurang dengan sendirinya.
melengkapi:
koordinat homogen juga memungkinkan untuk merepresentasikan tak terhingga: dalam 3D, yaitu titik pada tak terhingga dalam arahx,y,z. Biasanya, sumber cahaya pada posisi terbatas atau tak terbatas dapat direpresentasikan dengan cara yang sama.
Tentang transformasi perspektif, bahkan memungkinkan untuk melakukan interpolasi dengan benar tanpa distorsi perspektif (bertentangan dengan perangkat keras grafis awal pada PC).
Sebagai selera pribadi saya selalu abstain (bila mungkin) menggunakan koordinat homogen dan lebih suka formulasi Cartesian biasa.
Alasan utama adalah kenyataan bahwa koordinat homogen menggunakan 4 entri sepele dalam matriks transformasi (0, 0, 0, 1), yang melibatkan penyimpanan dan perhitungan yang tidak berguna (juga overhead rutinitas perhitungan matriks tujuan umum yang "secara default" digunakan dalam kasus ini).
Kelemahannya adalah Anda perlu lebih berhati-hati saat menulis persamaan dan kehilangan dukungan teori matriks, tetapi sejauh ini saya masih bertahan.
plain Cartesian formulation
atau tautan ke sumber daya yang menjelaskan penggunaannya dalam grafik 3D?
w
?
Biarkan R dan S menjadi rotasi dan matriks penskalaan dan T menjadi vektor terjemahan. Dalam grafik komputer, Anda mungkin perlu melakukan serangkaian terjemahan ke suatu titik. Anda bisa membayangkan betapa rumitnya hal ini.
Skala, terjemahkan, lalu putar dan ukur, kemudian terjemahkan lagi:
Skala, terjemahkan, lalu putar dan ukur, kemudian terjemahkan lagi:
Kami dapat mencapai ini dengan menambahkan koordinat lain ke poin kami. Saya akan menunjukkan semua ini untuk grafik 2D (poin 3D) tetapi Anda bisa memperluas semua ini ke grafik 3D (poin 4D).
You could go further and allow the extra coordinate to take on any value.
Calculations in affine coordinates often require divisions, which are expensive as compared to additions or multiplications. One usually does not need to divide when using projective coordinates.
Using projective coordinates (and more generally, projective geometry) tends to eliminate special cases too, making everything simpler and more uniform.