@Override public void splitData(List<double[]> points, GrowQueue_I32 data, List<double[]> left, GrowQueue_I32 leftData, List<double[]> right, GrowQueue_I32 rightData) { left.addAll(this.left); right.addAll(this.right); if( leftData != null ) leftData.addAll(this.leftIndex); if( rightData != null ) rightData.addAll(this.rightIndex); }
/** * Does much of the work needed to remove the redundant segments that are being merged into their root node. * The list of member count is updated. mergeList is updated with the new segment IDs. */ protected void setToRootNodeNewID( GrowQueue_I32 regionMemberCount ) { tmpMemberCount.reset(); for( int i = 0; i < mergeList.size; i++ ) { int p = mergeList.data[i]; if( p == i ) { mergeList.data[i] = rootID.data[i]; tmpMemberCount.add( regionMemberCount.data[i] ); } else { mergeList.data[i] = rootID.data[mergeList.data[i]]; } } regionMemberCount.reset(); regionMemberCount.addAll(tmpMemberCount); }
@Test public void addAll_array() { GrowQueue_I32 queue0 = new GrowQueue_I32(2); int[] array = new int[]{3,4,5}; queue0.add(1); queue0.add(2); assertEquals(2,queue0.size); queue0.addAll(array,0,3); assertEquals(5,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+1,1e-8); } queue0.reset(); queue0.addAll(array,1,3); assertEquals(2,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+4,1e-8); } }
@Test public void addAll_queue() { GrowQueue_I32 queue0 = new GrowQueue_I32(2); GrowQueue_I32 queue1 = new GrowQueue_I32(3); queue0.add(1); queue0.add(2); queue1.add(3); queue1.add(4); queue1.add(5); assertEquals(2,queue0.size); queue0.addAll(queue1); assertEquals(5,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+1); } queue0.reset(); queue0.addAll(queue1); assertEquals(3,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+3); } }
bestEnergy = score; bestCorners.reset(); bestCorners.addAll(workCorners2);