Topik matematika untuk pemrograman grafik 3D [ditutup]


14

Saya mengerti bahwa topik matematika berikut diperlukan untuk pemrograman grafik 3D. Saya sudah mulai melakukan beberapa di antaranya dalam kursus matematika saya. Dapatkah seseorang mengarahkan saya ke arah sumber daya yang menjelaskan bagaimana mereka berlaku? Apa masalah grafis / game yang mereka pecahkan?

  • matematika vektor
  • matematika matriks
  • angka empat
  • aljabar linier

Sejauh yang saya bisa lihat, ini semua adalah topik aljabar / matriks linier. Apakah ada topik lain yang diperlukan?


Pertanyaan ini memiliki beberapa info bagus tentang itu: gamedev.stackexchange.com/questions/2029/…
michael.bartnett

@ beardcp saya mungkin melakukan duplikat.
Bebek Komunis

Jawaban:


10

Aljabar Linier adalah disiplin utama untuk pemrograman grafik 3d hanya karena itu adalah bahasa matematika untuk menggambarkan geometri spasial. Tiga topik Anda yang lain benar-benar hanyalah himpunan bagian dari aljabar linier:

  • Vektor adalah cara berpikir tentang titik-titik dalam ruang
  • Matriks adalah cara berpikir tentang transformasi ruang dan benda: menerjemahkan objek, memperbesarnya, dll.
  • Kuarter adalah representasi alami untuk subkelompok tertentu dari transformasi, rotasi
  • dll, dll.

Sejauh potongan matematika lain yang relevan untuk pemrograman grafik 3d, yang saya sarankan yang tidak mendapatkan cinta hampir cukup adalah geometri komputasi. Banyak masalah alam bermuara pada topik dalam geometri komputasi:

  • Salah satu cara paling alami untuk mendefinisikan volume dari sekumpulan titik (misalnya, untuk menentukan volume audio tempat kebisingan latar belakang tertentu akan diputar, atau volume kabut, atau sejenisnya) adalah untuk menemukan Cembung Cembung poin. ; ada algoritma yang baik untuk melakukan itu dalam dimensi 2 dan 3, tetapi bahkan algoritma 2d tidak segera jelas.
  • Masalah untuk dapat menentukan objek apa yang dekat titik tertentu atau dekat satu sama lain (misalnya, untuk mengurangi jumlah objek yang harus diperiksa untuk kemungkinan tabrakan, atau untuk mencari tahu musuh mana yang akan melihat para pemain pada suatu diberikan titik) masuk ke bidang masalah kueri Geometris dan skema partisi spasial (dan dengan demikian ke dalam struktur seperti pohon BSP dan octrees). Gagasan umum yang sama juga digunakan untuk menjawab pertanyaan 'pelacak garis' (misalnya, 'apa yang diterima sinar laser ini?')

Setelah itu, saya mendorong melihat ke dalam kalkulus dasar dan khususnya metode numerik untuk persamaan diferensial; ini kurang relevan dengan grafis 3d per se dibandingkan dengan fisika 3d, tetapi secara umum kedua topik cukup erat (bahkan untuk masalah kinematika sederhana - misalnya, untuk animasi karakter dan sejenisnya) dan beberapa pengetahuan keduanya akan secara substansial meningkatkan pengetahuan Anda tentang salah satu; sulit jika bukan tidak mungkin untuk mengerjakan fisika yang relevan tanpa pengetahuan aljabar linear inti yang sama seperti yang digunakan grafik, tetapi pada saat yang sama memiliki pengetahuan fisika menyediakan titik referensi lain untuk memahami topik dalam grafik.


Ini jawaban yang fantastis, Steven, terima kasih. Saya menyukai rangkuman Anda tentang cara berpikir tentang vektor, matriks, dan angka empat (sayangnya, lebih informatif dalam 2 detik dari dosen aljabar linier saya saat ini). Anda juga memberi saya pemahaman yang lebih baik tentang jenis tantangan pemodelan yang ditimbulkan oleh pemrogram grafik 3D. Bersulang!
Katherine Rix



1

Jika Anda terbiasa dengan koordinat Cartesian, maka penerapan topik di atas untuk komputer grafis harus cukup jelas. Ada tutorial seperti ini untuk OpenGL yang akan membantu memperjelas aplikasi matematika untuk memecahkan masalah tampilan dasar, misalnya bagaimana membuat model kerangka kawat tampak berputar. Artikel Wikipedia tentang menggambar perspektif mungkin membantu dengan sedikit latar belakang sejarah.

Selain itu ada banyak topik tampilan yang mendapat manfaat dari formulasi matematika. Misalnya, padatan 3D biasanya diwakili oleh triangulasi permukaannya. Bagaimana kita hanya menunjukkan bagian permukaan yang harus "dilihat" oleh pengamat (algoritma permukaan / garis tersembunyi)? Jika suatu objek akan diterangi dari sumber / arah tertentu, bagaimana hal ini berinteraksi dengan perspektif untuk memberikan rendering permukaan yang meyakinkan?

Di luar itu ada segala macam topik pemodelan yang menarik, seperti animasi kabut atau nyala api. Tetapi transformasi koordinat, sebagai daftar topik Anda tampaknya berpusat, adalah pokok dari semua kemajuan selanjutnya.



1

Tidak semua dibutuhkan. Matematika vektor meliputi grafik 3D, Anda mungkin dapat mengatur geometri tanpa mengetahui titik-titik yang lebih baik dari matematika vektor, tetapi hal-hal seperti peta benjolan akan menjadi sangat sulit, dan Anda akan jatuh pada fisika.

Kuota hanya menawarkan deskripsi yang berbeda untuk beberapa matematika, mungkin menyenangkan untuk dimiliki, tetapi tentu saja tidak diperlukan karena matematika yang lebih konvensional cukup untuk menjelaskan perhitungan apa pun yang dapat Anda lakukan dengan angka empat.

Matriks matematika dan aljabar linier sangat erat kaitannya, sebagian besar menggambarkan operasi linier pada set angka. Tetapi sekali lagi, ini hanyalah cara lain untuk menggambarkan beberapa hal yang dapat dijelaskan dengan vektor dan aljabar.

Saya tidak tahu apakah Anda menganggapnya sebagai bagian dari matematika dasar, tetapi trigonometri tentu perlu membuat daftar juga.


Saya telah melihat beberapa penyebutan fisika sejauh ini - dapatkah Anda memberi tahu saya pendapat apa yang Anda maksud di sini? Saya belum menyentuh subjek dalam 12 tahun (yaitu sejak sekolah menengah) dan terus terang saya benci itu. Mungkin saya akan menemukan penerapannya lebih mudah untuk perut.
Katherine Rix

Fisika Newton, terutama resolusi tabrakan. Anda mungkin tidak diajarkan hal-hal ini di sekolah menengah, tetapi itu semua sangat matematis, jadi jika Anda suka matematika Anda harus baik.
aaaaaaaaaaaa
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.