2010-02-26 23 views
2

我將基於Fortran的3D列主數據數組展平成線性內存。我可以使用什麼公式/算法將其映射回Java 3D行 - 主要順序數組?例如,將線性列主數組數據轉換爲行主數據庫

|1, 2, 3| |10, 11, 12| |19, 20, 21| 
|4, 5, 6| |13, 14, 15| |22 23, 24| 
|7, 8, 9| |16, 17, 18| |25, 26, 27| 

看起來這在存儲器

緩衝液= 1,4,7,2,5,8,3,6,9,10,13,16,11,14,17 ,12,15,18,19,22,25,20,23,26,21,24,27

理想情況下,我需要傳遞數組索引並獲得線性內存的偏移量。在僞代碼中,像

for(;;) 
{ 
    javaarray[2][2][1] = buffer[Util.LookupOffset(2,2,1)] 
} 

謝謝。

+1

也許這只是我的感覺,但從你的問題來看,你想要做什麼是完全不清楚的。 – Roman 2010-02-26 21:52:52

+0

對不起。我同意。我應該問的是,我應該用什麼廣義公式來確定抵消基於列的線性陣列。 – javacavaj 2010-03-01 16:26:45

回答

2

首先,Java數組索引是基於0的,所以你需要javaarray [1] [2] [0]而不是javaarray [2] [3] [1]。

第二件事,我想我明白你想要做什麼。

  • 輸入:0,0,0(在它1個時隙)=> 輸出:0( 扁平陣列中的1索引)
  • 輸入:1,2,0(時隙 與12(in it))=>輸出:15(在扁平陣列中12的索引 )
  • 輸入:2,1,2(具有26的插槽)=>輸出:23(扁平陣列中的26的索引)

看起來你想要的,對(I,J,K)的輸入:

index = 9 * i + 3 * j + k 
+0

Shoover讓你走上正軌。爲了得到我使用的3D列主陣列的線性陣列偏移量: index = row +(column * NUMROWS)+(k * NUMROWS * NUMCOLUMNS) – javacavaj 2010-03-01 16:29:49