2014-10-03 87 views
-1

我在Matlab中創建了3D凸包圖。看來在這個函數中,一些激光點被用於凸包的小平面,但其他一些點位於凸包內。我的問題是,如何分別在Matlab中識別這些點。哪種方法適用於計算位於凸包內部的這些點與最近的凸包面(每個點到凸包的最接近的面的距離)之間的垂直距離? 如果您能介紹一些關於凸包功能的參考資料,我將不勝感激。我如何在Matlab中分別識別點內凸包

回答

0

關於Matlab文件交換,有一個很棒的功能叫做inhull,它將測試你的點是否在船體內部。我不確定它是否提供了從點到最近的方面的距離,但也許代碼中使用的方法可能很容易改變以提供此輸出。

0

檢出函數tsearchn

以下代碼在3D中創建一個球體並計算delaunay三角化。然後我們設置testpoints帶點的變量來測試它們是否在球體內。 t返回指數回到TRI爲最接近的點的四面體facet或NaN如果點在球外。

[X,Y,Z] = sphere(N); 

TRI = delaunay(X(:),Y(:),Z(:)); 

testpoints = [0 0 0; 0 .5 0; 1 2 0] 
t = tsearchn([X(:) Y(:) Z(:)],TRI,testpoints) 

figure; 
trisurf(TRI,X(:),Y(:),Z(:)); 

輸出是,

t = 

    8182 
    7779 
    NaN