2016-04-01 57 views
-1

考慮連接3維陣列中的兩點X(a,b,c)和Y(d,e,f)的直線。如何找到沿線的所有點的索引,除了最小二乘?沿3D陣列的索引編制

回答

1

你應該絕對遠離最小二乘,如果我瞭解你correclty會瀏覽整個3D空間。相反,看看Bresenheim's Line Algorithm

基本上,你從起始立方體開始,在每個XYZ方向計算線條的漸變,然後開始遊行。您可以在X(例如)方向上交替行進,直到線不再位於立方體內部,然後切換到其他方向(Y,Z)將線移回到當前立方體中。等等,直到當前的立方體成爲目標爲止。

所有通常的鏈接都是2D的,但3D中的過程完全相同。

棘手的位在於選擇哪個方向開始匹配。 3D中有算法,可以適應2D。

注: 清涼的優化是,每次在給定方向前進的時候,你可以進軍NX,或紐約州,或nz步驟直。這3個數字可以在手之前計算,並且永遠不會改變。

更酷的優化是,你只需要在開始時只計算一次X-Y-Z迭代的順序(在某些情況下可能是Y,X,Z)。然後行軍很好地定期,並應保持不變,直到達到目標。