如何沿保證每個 AABB 與射線相交的射線對軸對齊的邊界框進行排序?
我試圖對不能正常作業的質心進行排序。那么還有其他選擇嗎?
uj5u.com熱心網友回復:
ray_start您應該按方向的垂直距離排序ray_direction。這可以使用簡單的dot產品來計算。
如果 AABB 不相交,您可以按
dot(BBOX_center-ray_start,ray_direction)如果 AABB 相交
然后您可以使用 BBOX 的所有點而不是中心點,并選擇具有最小點結果的點進行排序,因此按以下方式排序:
min( dot(BBOX_p0-ray_start,ray_direction), dot(BBOX_p1-ray_start,ray_direction), dot(BBOX_p2-ray_start,ray_direction), dot(BBOX_p3-ray_start,ray_direction), dot(BBOX_p4-ray_start,ray_direction), dot(BBOX_p5-ray_start,ray_direction), dot(BBOX_p6-ray_start,ray_direction), dot(BBOX_p7-ray_start,ray_direction), )然而,按順序排列 AABB BBOX 并不意味著物件將以相同的順序被擊中!如果您想要最后一次點擊,這也按第一次“點擊”排序,然后按
max...您可以保留兩個 (
min,max) 訂單并使用O(n^2)測驗來測驗兩種型別之間的重疊差異,因為大多數訂單應該是相同的,只是相交的 BBOX 可能具有不同的本地順序,其中n本地相交 BBOX 的數量可能遠小于BBOX 總數...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/482226.html
上一篇:等于其索引值的數字
下一篇:將單元組轉換為多邊形的演算法
