簡體   English   中英

Raycasting的公式不足

[英]Raycasting's formula understending

我正在使用raycasting做項目(只是重新制作了舊的好wolf3d游戲)。 我由一個教程帶領。 我一直在理解他在其中使用的數學。 我試圖進入它,卻花了很多時間在谷歌上搜索,繪圖和解決它,但我無法獲得結果。 在這里問,因為數學和gamedev社區的人口似乎少得多。 而且gamedev社區也有和我相同的問題,但仍然沒有答案。 因此,也許有一個數學很好的人可以解釋它。

這是我的光芒 這是教程的內容:

用畢達哥拉斯以幾何方式導出deltaDistX時,公式為“ sqrt(1 +(rayDirY * rayDirY)/(rayDirX * rayDirX))”,但是可以將其簡化為abs(1 / rayDirX)。 類似地,deltaDistY是“ sqrt(1 +(rayDirX * rayDirX)/(rayDirY * rayDirY))”,可以簡化為abs(1 / rayDirY)。

rayDirX和rayDirY是我們射線的X和Y坐標。 網格的每個側面是1。我猜它與重新調整勾股定理連接在這里不言而喻 但是,這如何簡化呢?

abs(1 / rayDirX)和abs(1 / rayDirY)

任何幫助和信息表示贊賞。

當我遵循lodev指南時,我有同樣的問題。 問自己。 這是他的回應:

為簡便起見,我們將rayDirX和rayDirY稱為x和y。 然后:

sqrt(1 + y * y / (x * x)) = sqrt((x * x + y * y) / (x * x))

但是我們知道rayDir的長度始終為1,因此(x * x + y * y)為1,因此得出sqrt(1 / (x * x))等於abs(1 / x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM