2012-09-13 24 views
2

所以基本上我想檢查來自加農炮地形的激光束。要麼我不明白雷的概念,或者有什麼不對。 讓我們這行代碼Ray和intersectRayTriangle如何工作?

Intersector.intersectRayTriangle(intersectorRay, new Vector3(0.5f,1,0), new Vector3(0.5f,-1,0), new Vector3(1,0,0), hitPoint); 

intersectorRay有起源0,0,0和1,0,0的方向,所以我認爲它是從點0,0指向「直權」。 因此,給定三角形頂點的座標,它應該與它相交嗎?該代碼返回false。在證明,它返回true,只有當雷的起源是三角形內(也很明顯,它擊中的東西在這種情況下,其他的例子

Intersector.intersectRayTriangle(intersectorRay, new Vector3(0.5f,1,0), new Vector3(0.5f,-1,0), new Vector3(-1,0,0), hitPoint); 

測試:

現在這條線,另一方面返回true。 ..)。

我該怎麼做? 我正在使用最新的夜間版本的libgdx從9月6日

回答

1

我要出去在這裏的肢體,並說它在第一個例子中返回false的原因是因爲射線不通過三角形,因爲它在同一個xy平面上,射線正在穿過。

相反,如果你的三角形是在zy平面(或任何其他飛機,這是不完全的射線穿過被拍攝的平面)我懷疑你會得到你所期望的結果。

+0

如此看來,我濫用雷類即可。我知道它是爲照相機或渲染原因而創建的。 現在,我應該如何檢查我想在2D環境中檢查的內容?我想我會在自己的事業上寫點東西,時間在流逝,我必須完成我的項目。可能我會將所有障礙物的多邊形更改爲段並檢查段交叉點。 –

+0

好吧,我不會說你必然濫用雷,它更是在部門間方法假定,如果您使用的是雷,你是在三維空間(和專找與臉部的交點)。也許這是一個錯誤的假設,它應該把三角形作爲一個有效的交叉點在同一個地方進行Ray射擊。 –