2012-10-22 51 views

回答

0

很抱歉,如果我不會爲吐代碼...

基本上,你知道至少有4個點,將永遠成爲該多邊形的一部分:X,Min和Max中的最小值和最大值。如果兩個或多個點具有相同的最小值或最大值,則它們將被連接。

對於下面的演算,假設每個點是一個的Vector3,其中Z是0

使用MINX和MINY,你需要將它們與其他點連接。做(MinX - Point)的交叉乘積(Point - MinY),如果結果向量的Z是+1,則當與MinX和MinY連接時,該點將創建船體形狀。解析完所有點後,您將留下可能有效的點集合,每個點都會創建一個凸形狀。從它們中,您重新奪回MinX/MinY並重新計算剩餘的點數。如果MinX和MinY是同一個點,你知道它直接鏈接到其他人。

基本上,你這樣做的4個quandrants。 (MinX/MinY,MinX/MaxY,MaxX/MinY,MaxX/MaxY)

您將得到一個定義外部形狀或凸包的點的列表。從那以後,應該很簡單,以便連接它們。

有可能是一個更高效的算法,只是說我會怎麼做。