/*
Copyright (C) 2001, 2007 United States Government as represented by
the Administrator of the National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind.view;
import gov.nasa.worldwind.geom.Position;
import gov.nasa.worldwind.View;
import gov.nasa.worldwind.util.Logging;
/**
* @author dcollins
* @version $Id: EyePositionIterator.java 4852 2008-03-28 19:14:52Z dcollins $
*/
public class EyePositionIterator extends AbstractViewStateIterator
{
private final Position begin;
private final Position end;
public EyePositionIterator(long lengthMillis, Position beginEyePosition, Position endEyePosition)
{
super(lengthMillis);
if (beginEyePosition == null || endEyePosition == null)
{
String message = Logging.getMessage("nullValue.PositionIsNull");
Logging.logger().severe(message);
throw new IllegalArgumentException(message);
}
this.begin = beginEyePosition;
this.end = endEyePosition;
}
public EyePositionIterator(long startTimeMillis, long lengthMillis, Position beginEyePosition, Position endEyePosition)
{
super(startTimeMillis, lengthMillis);
if (beginEyePosition == null || endEyePosition == null)
{
String message = Logging.getMessage("nullValue.PositionIsNull");
Logging.logger().severe(message);
throw new IllegalArgumentException(message);
}
this.begin = beginEyePosition;
this.end = endEyePosition;
}
public final Position getBeginEyePosition()
{
return this.begin;
}
public final Position getEndEyePosition()
{
return this.end;
}
protected void doNextState(double interpolant, View view)
{
if (interpolant < 0 || interpolant > 1)
{
String message = Logging.getMessage("generic.ArgumentOutOfRange", interpolant);
Logging.logger().severe(message);
throw new IllegalArgumentException(message);
}
if (view == null)
{
String message = Logging.getMessage("nullValue.ViewIsNull");
Logging.logger().severe(message);
throw new IllegalArgumentException(message);
}
Position newPosition = Position.interpolate(interpolant, this.begin, this.end);
view.setEyePosition(newPosition);
}
}