Jawaban ini sudah lama setelah kenyataan, tetapi karena saya menemukan ini di google mungkin ini masih akan membantu seseorang. Saya hanya ingin mengklarifikasi apa yang dikatakan JasonD dan Notabene: Jauh lebih mudah untuk melakukan perhitungan kliping (mencari tahu apa yang harus Anda lihat dan apa yang tidak boleh Anda lihat karena cara pandang Anda, seberapa jauh jaraknya, dll. .). Alih-alih memeriksa jika hal-hal berpotongan pesawat di perbatasan frustrasi tampilan Anda, Anda cukup membandingkan x, y, z dari segalanya dengan xMax, xMin, yMax, dll. , karena Anda hanya memiliki kubus. Ini sedikit lebih rumit jika Anda ingin hanya memiliki bagian dari sesuatu yang ditampilkan, tetapi matematika masih lebih baik dengan unit kubus daripada dengan frustum.
Beberapa hal yang saya temukan menyesatkan dalam jawaban lain:
-Anda tidak memotong sisi dari pandangan frustrasi, Anda semacam melengkung ke dalam kubus menggunakan transformasi matriks homogen.
-Kami tidak mengonversi ke layar 2D dengan langkah ini. Langkah ini tidak perlu dilakukan. Secara teoritis kita bisa melakukan semua pekerjaan kita tanpa mengubah frustum menjadi kubus terlebih dahulu, yang akan lebih intuitif tetapi lebih sulit matematika - tetapi grafik adalah semua tentang melakukan perhitungan sangat cepat karena ada BANYAK perhitungan per detik untuk rata-rata permainan / apa pun.
Lebih detail: Ini tidak harus menjadi unit cube yang akan kita konversi, hanya saja harus berupa kotak persegi panjang untuk perhitungan max-min kita. Sebenarnya di kelas kami menggunakan kotak di mana kamera menghadap ke bawah sumbu z, z bergerak dari 0 ke 1, x pergi dari -1 ke 1, dan y pergi dari -1 ke 1. Secara umum dalam matematika 1, 0, dan -1 adalah angka yang bagus untuk mempermudah perhitungan, saya berasumsi bahwa kita tidak beralih dari -100 ke 100 atau apalah.
TLDR: Membuat kliping lebih mudah.
Sunting: bobobobo memiliki intinya. Semuanya segitiga, umumnya: D.
Sumber: Mengambil kelas grafis universitas