Saya memeriksa tutorial raycasting yang bagus ini di http://lodev.org/cgtutor/raycasting.html dan memiliki pertanyaan matematika yang mungkin sangat sederhana.
Dalam algoritma DDA, saya mengalami kesulitan memahami perhitungan variabel deltaDistX dan deltaDistY, yang merupakan jarak yang harus ditempuh oleh sinar dari 1 sisi x ke sisi x sisi berikutnya, atau dari sisi 1 y ke sisi berikutnya sisi y, di kotak persegi yang membentuk peta dunia (lihat screenshot di bawah).
Dalam tutorial mereka dihitung sebagai berikut, tetapi tanpa banyak penjelasan:
//length of ray from one x or y-side to next x or y-side
double deltaDistX = sqrt(1 + (rayDirY * rayDirY) / (rayDirX * rayDirX));
double deltaDistY = sqrt(1 + (rayDirX * rayDirX) / (rayDirY * rayDirY));
rayDirY dan rayDirX adalah arah dari sinar yang telah dilemparkan.
Bagaimana Anda mendapatkan formula ini? Sepertinya teorema pythagoras adalah bagian darinya, tetapi entah bagaimana ada pembagian yang terlibat di sini. Adakah yang bisa memberi saya petunjuk tentang pengetahuan matematika apa yang saya lewatkan di sini, atau "buktikan" rumus dengan menunjukkan bagaimana itu diturunkan?