将网格位置转换为绝对位置

时间:2018-02-23 11:24:33

标签: json algorithm graph grid

我有一个大问题,但我不知道如何解决它。

我有一个json文件,其中包含元素及其在网格中的位置。 所有可能的元素都有子元素,子元素从零(0,0)重新编入索引。

我需要将相对位置转换为“绝对位置”。位置。

enter image description here

示例json文件:

{
   label: 'item 1',
   position: {x: 0, y: 0},
   childrens: [
               {
                  label: 'item 1 children 1'
                  position: {x:  1, y: 0}
               },
               { 
                  label: 'item 1 children 2',
                  position: {x: 2, y: 0}
               }
              ]
},
{
   label: 'item 2',
   position: {x: 1, y: 0},
   childrens: [
     {
       label: 'item 2 children 1',
       position : {x: 0, y: 2}
     } 
   ]
}

1 个答案:

答案 0 :(得分:0)

保持绝对偏移。

从根节点的偏移量(0,0)开始。然后当你到达一个孩子时,计算左上角的绝对坐标,并用计算出的坐标作为新的绝对偏移来调用递归函数。

对于常规项目,将绝对偏移量添加到项目坐标以获取绝对坐标。

在您的示例中,您以offset(0,0)开头。然后你到达子矩形。您计算左上角应位于位置(2,0)并将其作为偏移量发送到递归调用中。到达子项内的第一个块时,您将绝对坐标计算为子相对坐标:(0,0)+绝对坐标:(2,0)得到(2,0)。