/** * Gets the value at the index which corresponds to the specified fraction * @param fraction 0 to 1 inclusive * @return value at fraction */ public float getFraction( double fraction ) { return get( (int)((size-1)*fraction) ); }
/** * Gets the value at the index which corresponds to the specified fraction * @param fraction 0 to 1 inclusive * @return value at fraction */ public float getFraction( double fraction ) { return get( (int)((size-1)*fraction) ); }
@Override public void check(GrowQueue_F32 queue, int index, double value) { assertEquals((float)value,queue.get(index),1e-4f); }
/** * Removes observations which have been marked with NaN */ private void removeMarkedObservations() { Point2D_F64 observation = new Point2D_F64(); for (int viewIndex = 0; viewIndex < observations.views.length; viewIndex++) { // System.out.println("ViewIndex="+viewIndex); SceneObservations.View v = observations.views[viewIndex]; for(int indexInView = v.point.size-1; indexInView >= 0; indexInView-- ) { int pointID = v.getPointId(indexInView); SceneStructureProjective.Point f = structure.points[pointID]; // System.out.println(" pointIndex="+pointIndex+" pointID="+pointID+" hash="+f.hashCode()); v.get(indexInView, observation); if( !Double.isNaN(v.observations.get(indexInView*2))) continue; // Tell the feature it is no longer visible in this view f.removeView(viewIndex); // Remove the observation of this feature from the view v.remove(indexInView); } } }
@Test public void remove_two() { GrowQueue_F32 alg = new GrowQueue_F32(10); alg.push(1); alg.push(3); alg.push(4); alg.push(5); alg.push(6); alg.remove(1,1); assertEquals(4,alg.size); assertEquals(1,alg.get(0), UtilEjml.TEST_F32); assertEquals(4,alg.get(1), UtilEjml.TEST_F32); assertEquals(5,alg.get(2), UtilEjml.TEST_F32); assertEquals(6,alg.get(3), UtilEjml.TEST_F32); alg.remove(0,1); assertEquals(2,alg.size); assertEquals(5,alg.get(0), UtilEjml.TEST_F32); assertEquals(6,alg.get(1), UtilEjml.TEST_F32); }
@Test public void auto_grow() { GrowQueue_F32 alg = new GrowQueue_F32(3); assertEquals(3,alg.data.length); for( int i = 0; i < 10; i++ ) alg.push(i); assertEquals(10,alg.size); for( int i = 0; i < 10; i++ ) assertEquals(i,alg.get(i),1e-4f); }
@Test public void addAll_array() { GrowQueue_F32 queue0 = new GrowQueue_F32(2); float[] array = new float[]{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-4f); } 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-4f); } }
@Test public void reset() { GrowQueue_F32 alg = new GrowQueue_F32(10); alg.push(1); alg.push(3); alg.push(-2); assertTrue(1.0f == alg.get(0)); assertEquals(3,alg.size); alg.reset(); assertEquals(0, alg.size); }
@Test public void addAll_queue() { GrowQueue_F32 queue0 = new GrowQueue_F32(2); GrowQueue_F32 queue1 = new GrowQueue_F32(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,1e-5); } queue0.reset(); queue0.addAll(queue1); assertEquals(3,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+3,1e-5); } }