public YoFrameQuaternionInMultipleFrames(String namePrefix, YoVariableRegistry registry, ReferenceFrame... referenceFrames) { super(namePrefix, null, registry); multipleFramesHelper = new YoMultipleFramesHelper(namePrefix, registry, referenceFrames); }
@Override public ReferenceFrame getReferenceFrame() { return multipleFramesHelper.getCurrentReferenceFrame(); }
@Override public int getNumberOfReferenceFramesRegistered() { return multipleFramesHelper.getNumberOfReferenceFramesRegistered(); }
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout=300000) public void testCommonUsageOfYoMultipleFramesHelper() { String namePrefix = "framesHelper"; YoVariableRegistry registry = new YoVariableRegistry("framesHelper"); ReferenceFrame worldFrame = ReferenceFrame.getWorldFrame(); ReferenceFrame frameA = new TranslationReferenceFrame("frameA", worldFrame); ReferenceFrame frameB = new TranslationReferenceFrame("frameB", frameA); YoMultipleFramesHelper helper = new YoMultipleFramesHelper(namePrefix, registry, worldFrame, frameA); assertEquals(2, helper.getNumberOfReferenceFramesRegistered()); assertTrue(worldFrame == helper.getCurrentReferenceFrame()); assertTrue(worldFrame == helper.getReferenceFrame()); helper.checkReferenceFrameMatch(worldFrame); assertTrue(helper.isReferenceFrameRegistered(worldFrame)); assertTrue(helper.isReferenceFrameRegistered(frameA)); assertFalse(helper.isReferenceFrameRegistered(frameB)); helper.registerReferenceFrame(frameB); assertEquals(3, helper.getNumberOfReferenceFramesRegistered()); List<ReferenceFrame> referenceFrames = new ArrayList<ReferenceFrame>(); helper.getRegisteredReferenceFrames(referenceFrames); assertEquals(3, referenceFrames.size()); }
new YoMultipleFramesHelper("framesHelperOne", registry); fail("Need to have at least one reference frame when you create a YoMultipleFramesHelper"); new YoMultipleFramesHelper("framesHelperTwo", registry, (ReferenceFrame) null); fail("The Reference Frames cannot be null"); new YoMultipleFramesHelper("framesHelperTwoB", registry); fail("The Reference Frames cannot be null"); YoMultipleFramesHelper helper = new YoMultipleFramesHelper("framesHelperFour", registry, worldFrame); assertEquals(1, helper.getNumberOfReferenceFramesRegistered()); helper.switchCurrentReferenceFrame(unregisteredFrame); fail("Cannot switch to an unregistered frame"); assertEquals(worldFrame, helper.getCurrentReferenceFrame());
@Override public void getRegisteredReferenceFrames(List<ReferenceFrame> referenceFramesToPack) { multipleFramesHelper.getRegisteredReferenceFrames(referenceFramesToPack); }
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout=300000) public void testRepeatFrames() { YoVariableRegistry registry = new YoVariableRegistry("framesHelper"); ReferenceFrame worldFrame = ReferenceFrame.getWorldFrame(); YoMultipleFramesHelper helper = new YoMultipleFramesHelper("framesHelperThree", registry, worldFrame, worldFrame); assertEquals("Should ignore repeat frames!", 1, helper.getNumberOfReferenceFramesRegistered()); helper.registerReferenceFrame(worldFrame); assertEquals("Should ignore repeat frames!", 1, helper.getNumberOfReferenceFramesRegistered()); }
@Override public void registerReferenceFrame(ReferenceFrame newReferenceFrame) { multipleFramesHelper.registerReferenceFrame(newReferenceFrame); }
@Override public boolean isReferenceFrameRegistered(ReferenceFrame referenceFrame) { return multipleFramesHelper.isReferenceFrameRegistered(referenceFrame); }
@Override public void setToNaN(ReferenceFrame desiredReferenceFrame) { setToNaN(); multipleFramesHelper.switchCurrentReferenceFrame(desiredReferenceFrame); } }
/** * Change the current reference frame for another one that has already been registered. * @param newCurrentReferenceFrame * @return ReferenceFrame the previous current reference frame */ public ReferenceFrame switchCurrentReferenceFrame(ReferenceFrame newCurrentReferenceFrame) { ReferenceFrame previousReferenceFrame = getCurrentReferenceFrame(); currentFrameIndex.set(findRegisteredReferenceFrame(newCurrentReferenceFrame)); return previousReferenceFrame; }
@Override public void getRegisteredReferenceFrames(List<ReferenceFrame> referenceFramesToPack) { multipleFramesHelper.getRegisteredReferenceFrames(referenceFramesToPack); }
@Override public void registerReferenceFrame(ReferenceFrame newReferenceFrame) { multipleFramesHelper.registerReferenceFrame(newReferenceFrame); }
@Override public boolean isReferenceFrameRegistered(ReferenceFrame referenceFrame) { return multipleFramesHelper.isReferenceFrameRegistered(referenceFrame); }
@Override public void setToNaN(ReferenceFrame desiredReferenceFrame) { setToNaN(); multipleFramesHelper.switchCurrentReferenceFrame(desiredReferenceFrame); } }
@Override public final void getRegisteredReferenceFrames(List<ReferenceFrame> referenceFramesToPack) { multipleFramesHelper.getRegisteredReferenceFrames(referenceFramesToPack); }
@Override public ReferenceFrame getReferenceFrame() { return multipleFramesHelper.getCurrentReferenceFrame(); }
@Override public final void registerReferenceFrame(ReferenceFrame newReferenceFrame) { multipleFramesHelper.registerReferenceFrame(newReferenceFrame); }
@Override public boolean isReferenceFrameRegistered(ReferenceFrame referenceFrame) { return multipleFramesHelper.isReferenceFrameRegistered(referenceFrame); }
/** * Change the current reference frame and set to zero the coordinates (different from changeFrame() ). * @return the previous current reference frame. */ @Override public ReferenceFrame switchCurrentReferenceFrame(ReferenceFrame referenceFrame) { ReferenceFrame previousReferenceFrame = multipleFramesHelper.switchCurrentReferenceFrame(referenceFrame); setToZero(); return previousReferenceFrame; }