2011-06-06 34 views
4

我有一個由中心(x,y,z)定義的圓,半徑和方向矢量指定了圓所面對的方向。我需要測試這樣一個圓與軸對齊的邊界框是否相交。爲了說明,通過相交,我的意思是如果圓圈描述的區域內的任何點都在邊界框內,那麼就構成了一個「交集」。3D盒子圓交點

這不適用於遊戲,我寧願不以某種方式近似圓圈。應該可以,但將圓圈視爲非常小的圓柱體,如果這使得這更容易處理。

謝謝。

尼克

+0

你是Google for「box circle intersection」嗎? – 2011-06-06 22:14:45

+0

不知道你是什麼意思的「邊界框」。一個「邊界框」通常是不相交的... – 2011-06-06 22:16:06

+0

所有的框圈谷歌命中是2D的,而不是一個3D矢量的「圓」。 – 2011-06-06 22:18:56

回答

1

你的圓心和你的向量定義了一個平面;將你的飛機與你的箱子相交(特別是6架飛機組成你的箱子);那會給你一組線段。使用點線最近點算法,確定到您的中心點的每條線段上的最近點;如果該點與您的圓心點之間的距離平方(使用平方距離進行距離比較,速度更快且精確)小於半徑的平方,則您的框與圓相交。

注意:這個過程是通用的;使用軸對齊的邊界框使得一切都變得更加簡單。

+1

謝謝。考慮到飛機是無限的,我首先做了飛機箱相交的測試,然後做了上述。似乎運作良好。 – 2011-06-10 13:36:26

+0

很高興能夠提供幫助,是的,首先是飛機箱交叉測試是一個不錯的優化。 – 2011-06-10 15:39:39