[英]How do I determine whether a 3D coordinate is located within the boundaries of a 3D object in BIM? I'm using Xbim working with IFC-files
我有一個 3D 建築物 model (BIM) 的 IFC 文件拆分為組成物理對象,並且我有我想分配給正確的 object 的屬性。 這些屬性帶有一個位置:它們是與 3D 空間中的一個點相關聯的標量值。 如果我有一個點 P1 = (x1, y1, z1),我如何確定這個點是位於門內還是門旁邊的牆上(或兩者都不是,在空中)?
我看到兩個選項,但無法破譯 Xbim/IFC 文檔以使用任何一種方法到達任何地方:
作為一個額外的挑戰,我最終可能會在一個非常大的 BIM 中分布數以萬計的屬性,因此首選低復雜度的算法。
本質上,您正在查看Collision detection algorithm 。 這是一個相當復雜的話題……
為了提高效率,您經常構建場景的OctTree - Xbim 在這里有一個實現https://github.com/xBimTeam/XbimGeometry/blob/master/Xbim.ModelGeometry.Scene/XbimOctree.cs
..你可以使用。
有一些使用邊界框和八叉樹來計算兩個產品是否相交或包含彼此等的高級示例代碼,這可能會讓您在https://github.com/xBimTeam/XbimAnalysis/tree/develop/上有所幫助Xbim.Analysis/空間
..但您需要根據您的具體情況進行調整。 另請注意,如果幾何形狀不規則,則針對邊界框(或命中框)進行測試會產生一些誤報(例如,椅子的邊界框將具有比其真實幾何形狀更大的體積),因此您可能需要一旦你有一個候選命中,一個更精確的碰撞檢測。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.