2010-02-26 39 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