簡體   English   中英

檢查點是否位於 m 維矩形內

[英]Check if point lies within m-dimensional rectangle

我正在嘗試提出一種通用算法,用於檢測點是否位於使用間隔定義的 m 維超矩形的邊界內或邊界上。

對於 2D 情況,它是直截了當的,如果點位於多邊形內,則可以使用光線投射等技術。 但是,如何檢查 m 維超矩形? 有沒有辦法說方程這樣的超矩形並檢查點是在邊界內還是在邊界上?

我正在嘗試在 C++ 中實現這一點,是否有任何已知的庫可能會有所幫助?

謝謝! 非常感謝幫助!

直截了當的方法有什么問題?

if ((Point.x[0]>= Rect.min[0]) && (Point.x[0] <= Rect.max[0]) && 
 ...
   (Point.x[m-1]>= Rect.min[m-1]) && (Point.x[m-1] <= Rect.max[m-1])) 

按維度循環,當然

如果您將超矩形 (HR) 存儲為間隔(即中心坐標 + 范圍或開始 + 結束)和旋轉的組合,則可以將查詢點轉換為 HR 的坐標系(通過適當的旋轉、平移和縮放) . 然后你只需要做2*m邊界檢查。

您建議的使用多面體的替代方案可能會影響性能,因為 m 維 HR 有2^m角點。

(這當然是假設您不限於軸對齊的框,在這種情況下,答案當然是微不足道的)

暫無
暫無

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

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