Package gov.nasa.worldwind.view.orbit
Class BasicOrbitView
- java.lang.Object
-
- gov.nasa.worldwind.avlist.AVListImpl
-
- gov.nasa.worldwind.WWObjectImpl
-
- gov.nasa.worldwind.view.BasicView
-
- gov.nasa.worldwind.view.orbit.BasicOrbitView
-
- All Implemented Interfaces:
AVList
,MessageListener
,Restorable
,View
,OrbitView
,WWObject
,java.beans.PropertyChangeListener
,java.util.EventListener
public class BasicOrbitView extends BasicView implements OrbitView
-
-
Field Summary
Fields Modifier and Type Field Description protected Position
center
protected OrbitViewCollisionSupport
collisionSupport
protected boolean
viewOutOfFocus
protected double
zoom
-
Fields inherited from class gov.nasa.worldwind.view.BasicView
COLLISION_NUM_ITERATIONS, COLLISION_THRESHOLD, dc, DEFAULT_DEPTH_RESOLUTION, detectCollisions, eyePosition, farClipDistance, fieldOfView, frustum, globe, hadCollisions, heading, horizonDistance, lastEyePoint, lastEyePosition, lastForwardVector, lastFrustumInModelCoords, lastUpVector, MINIMUM_FAR_DISTANCE, MINIMUM_NEAR_DISTANCE, modelview, modelviewInv, nearClipDistance, pitch, projection, roll, viewInputHandler, viewLimits, viewport, viewStateID
-
Fields inherited from interface gov.nasa.worldwind.view.orbit.OrbitView
CENTER_STOPPED
-
Fields inherited from interface gov.nasa.worldwind.View
VIEW_STOPPED
-
-
Constructor Summary
Constructors Constructor Description BasicOrbitView()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addCenterAnimator(Position begin, Position end, boolean smoothed)
void
addCenterAnimator(Position begin, Position end, long lengthMillis, boolean smoothed)
void
addEyePositionAnimator(long timeToIterate, Position beginPosition, Position endPosition)
void
addFlyToZoomAnimator(Angle heading, Angle pitch, double zoomAmount)
void
addHeadingAnimator(Angle begin, Angle end)
void
addHeadingPitchAnimator(Angle beginHeading, Angle endHeading, Angle beginPitch, Angle endPitch)
void
addPanToAnimator(Position centerPos, Angle heading, Angle pitch, double zoom)
void
addPanToAnimator(Position centerPos, Angle heading, Angle pitch, double zoom, boolean endCenterOnSurface)
void
addPanToAnimator(Position centerPos, Angle heading, Angle pitch, double zoom, long timeToMove, boolean endCenterOnSurface)
void
addPanToAnimator(Position beginCenterPos, Position endCenterPos, Angle beginHeading, Angle endHeading, Angle beginPitch, Angle endPitch, double beginZoom, double endZoom, boolean endCenterOnSurface)
void
addPanToAnimator(Position beginCenterPos, Position endCenterPos, Angle beginHeading, Angle endHeading, Angle beginPitch, Angle endPitch, double beginZoom, double endZoom, long timeToMove, boolean endCenterOnSurface)
void
addPitchAnimator(Angle begin, Angle end)
void
addZoomAnimator(double zoomStart, double zoomEnd)
protected void
afterDoApply()
boolean
canFocusOnTerrainCenter()
boolean
canFocusOnViewportCenter()
Determines if the BasicOrbitView can be focused on the viewport centerfocusOnViewportCenter()
.void
computeAndSetViewCenter()
Computes and sets the center of rotation for heading and pitch changes.void
computeAndSetViewCenterIfNeeded()
Computes and sets the center of rotation for heading and pitch changes, if it is needed.protected double
computeFarDistance(Position eyePosition)
protected double
computeHorizonDistance(Position eyePosition)
void
copyViewState(View view)
Copy the state of the givenView
.protected void
doApply(DrawContext dc)
protected void
doGetRestorableState(RestorableSupport rs, RestorableSupport.StateObject context)
protected void
doRestoreState(RestorableSupport rs, RestorableSupport.StateObject context)
protected void
flagHadCollisions()
void
focusOnTerrainCenter()
void
focusOnViewportCenter()
Sets the point of rotation for heading and pitch changes to the surface position at the viewport center.Vec4
getCenterPoint()
Gets the center point of the view.Position
getCenterPosition()
Get the center position of the OrbitView.Vec4
getCurrentEyePoint()
Returns the most up-to-date location of the eye in cartesian coordinates.Position
getCurrentEyePosition()
Returns the current geographic coordinates of this view's eye position, as determined from this view's current parameters.OrbitViewLimits
getOrbitViewLimits()
Returns theOrbitViewLimits
that apply to thisOrbitView
.double
getZoom()
Get the zoom value for the OrbitView.protected void
legacyRestoreState(RestorableSupport rs, RestorableSupport.StateObject context)
Restores state values from previous versions of the BasicObitView state XML.protected void
loadConfigurationValues()
static Position
normalizedCenterPosition(Position unnormalizedPosition)
static Angle
normalizedHeading(Angle unnormalizedHeading)
static Angle
normalizedPitch(Angle unnormalizedPitch)
protected void
resolveCollisionsWithCenterPosition()
protected void
resolveCollisionsWithPitch()
void
setCenterPosition(Position center)
Sets the center position of the OrbitView.void
setEyePosition(Position eyePosition)
Sets the geographic position of the eye.void
setHeading(Angle heading)
Sets the heading of the view.protected void
setModelCoordinates(OrbitViewInputSupport.OrbitViewState modelCoords)
void
setOrbitViewLimits(OrbitViewLimits viewLimits)
Sets theOrbitViewLimits
that will apply to thisOrbitView
.void
setOrientation(Position eyePosition, Position centerPosition)
Sets the location of the eye, and the center of the screen in geographic coordinates.void
setPitch(Angle pitch)
Sets the pitch of the view.void
setViewOutOfFocus(boolean b)
Alerts the BasicOrbitView that the view requires the point of rotation for heading and pitch changes to be recalculated.void
setZoom(double zoom)
Set the zoom value for the OrbitVeiw.void
stopMovementOnCenter()
Stop any changes to the center position.protected boolean
validateModelCoordinates(OrbitViewInputSupport.OrbitViewState modelCoords)
-
Methods inherited from class gov.nasa.worldwind.view.BasicView
addAnimator, apply, computeEyePositionFromModelview, computeFarClipDistance, computeHorizonDistance, computeNearClipDistance, computeNearDistance, computePixelSizeAtDistance, computePositionFromScreenPoint, computeRayFromScreenPoint, getCurrentForwardVector, getDC, getEyePoint, getEyePosition, getFarClipDistance, getFieldOfView, getForwardVector, getFrustum, getFrustumInModelCoordinates, getGlobe, getHeading, getHorizonDistance, getModelviewMatrix, getNearClipDistance, getPitch, getProjectionMatrix, getRestorableState, getRoll, getUpVector, getViewInputHandler, getViewport, getViewPropertyLimits, getViewStateID, goTo, hadCollisions, isAnimating, isDetectCollisions, loadGLViewState, popReferenceCenter, project, project, pushReferenceCenter, restoreState, setDetectCollisions, setFarClipDistance, setFieldOfView, setGlobe, setNearClipDistance, setReferenceCenter, setRoll, setViewInputHandler, setViewState, stopAnimations, stopMovement, unProject, unProject, updateModelViewStateID
-
Methods inherited from class gov.nasa.worldwind.WWObjectImpl
onMessage, propertyChange
-
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
Methods inherited from interface gov.nasa.worldwind.event.MessageListener
onMessage
-
Methods inherited from interface gov.nasa.worldwind.view.orbit.OrbitView
hadCollisions, isDetectCollisions, setDetectCollisions
-
Methods inherited from interface gov.nasa.worldwind.Restorable
getRestorableState, restoreState
-
Methods inherited from interface gov.nasa.worldwind.View
addAnimator, apply, computePixelSizeAtDistance, computePositionFromScreenPoint, computeRayFromScreenPoint, getEyePoint, getEyePosition, getFarClipDistance, getFieldOfView, getForwardVector, getFrustum, getFrustumInModelCoordinates, getGlobe, getHeading, getHorizonDistance, getModelviewMatrix, getNearClipDistance, getPitch, getProjectionMatrix, getRoll, getUpVector, getViewInputHandler, getViewport, getViewPropertyLimits, getViewStateID, goTo, isAnimating, popReferenceCenter, project, pushReferenceCenter, setFieldOfView, setReferenceCenter, setRoll, stopAnimations, stopMovement, unProject
-
-
-
-
Field Detail
-
center
protected Position center
-
zoom
protected double zoom
-
viewOutOfFocus
protected boolean viewOutOfFocus
-
collisionSupport
protected final OrbitViewCollisionSupport collisionSupport
-
-
Method Detail
-
loadConfigurationValues
protected void loadConfigurationValues()
-
flagHadCollisions
protected void flagHadCollisions()
-
stopMovementOnCenter
public void stopMovementOnCenter()
Description copied from interface:OrbitView
Stop any changes to the center position.- Specified by:
stopMovementOnCenter
in interfaceOrbitView
-
copyViewState
public void copyViewState(View view)
Description copied from interface:View
Copy the state of the givenView
.- Specified by:
copyViewState
in interfaceView
- Overrides:
copyViewState
in classBasicView
- Parameters:
view
- TheView
whose state is to be copied.
-
getCenterPosition
public Position getCenterPosition()
Description copied from interface:OrbitView
Get the center position of the OrbitView. The center position is used as the point about which the heading and pitch rotate. It is defined by the intersection of a ray from the eye position through the center of the viewport with the surface of the globe.- Specified by:
getCenterPosition
in interfaceOrbitView
- Overrides:
getCenterPosition
in classBasicView
- Returns:
- the center position.
-
getCenterPoint
public Vec4 getCenterPoint()
Description copied from interface:View
Gets the center point of the view.- Specified by:
getCenterPoint
in interfaceView
- Overrides:
getCenterPoint
in classBasicView
- Returns:
- the center point of the view if that point is on the globe, otherwise, return null
-
setCenterPosition
public void setCenterPosition(Position center)
Description copied from interface:OrbitView
Sets the center position of the OrbitView. The center position is used as the point about which the heading and pitch rotate. It is defined by the intersection of a ray from the eye position through the center of the viewport with the surface of the globe.- Specified by:
setCenterPosition
in interfaceOrbitView
- Parameters:
center
- The desired center position.
-
setHeading
public void setHeading(Angle heading)
Description copied from interface:View
Sets the heading of the view. The implementation may interpret this command in whatever way it chooses.- Specified by:
setHeading
in interfaceView
- Overrides:
setHeading
in classBasicView
- Parameters:
heading
- The direction to aim the view in degrees
-
setPitch
public void setPitch(Angle pitch)
Description copied from interface:View
Sets the pitch of the view. The implementation may interpret pitch as it chooses
-
getZoom
public double getZoom()
Description copied from interface:OrbitView
Get the zoom value for the OrbitView. The zoom value is the distance between the eye position and the center position.
-
setZoom
public void setZoom(double zoom)
Description copied from interface:OrbitView
Set the zoom value for the OrbitVeiw. The zoom value is the distance between the eye position and the center position.
-
getOrbitViewLimits
public OrbitViewLimits getOrbitViewLimits()
Returns theOrbitViewLimits
that apply to thisOrbitView
. Incoming parameters to the methods setCenterPosition, setHeading, setPitch, or setZoom are be limited by the parameters defined in thisOrbitViewLimits
.- Specified by:
getOrbitViewLimits
in interfaceOrbitView
- Returns:
- the
OrbitViewLimits
that apply to thisOrbitView
-
setOrbitViewLimits
public void setOrbitViewLimits(OrbitViewLimits viewLimits)
Sets theOrbitViewLimits
that will apply to thisOrbitView
. Incoming parameters to the methods setCenterPosition, setHeading, setPitch, or setZoom will be limited by the parameters defined inviewLimits
.- Specified by:
setOrbitViewLimits
in interfaceOrbitView
- Parameters:
viewLimits
- theOrbitViewLimits
that will apply to thisOrbitView
.- Throws:
java.lang.IllegalArgumentException
- ifviewLimits
is null.
-
normalizedCenterPosition
public static Position normalizedCenterPosition(Position unnormalizedPosition)
-
resolveCollisionsWithCenterPosition
protected void resolveCollisionsWithCenterPosition()
-
resolveCollisionsWithPitch
protected void resolveCollisionsWithPitch()
-
computeAndSetViewCenterIfNeeded
public void computeAndSetViewCenterIfNeeded()
Computes and sets the center of rotation for heading and pitch changes, if it is needed.
-
computeAndSetViewCenter
public void computeAndSetViewCenter()
Computes and sets the center of rotation for heading and pitch changes.
-
setViewOutOfFocus
public void setViewOutOfFocus(boolean b)
Alerts the BasicOrbitView that the view requires the point of rotation for heading and pitch changes to be recalculated.- Parameters:
b
- true if the point of rotation needs recalculation, false if it does not.
-
canFocusOnViewportCenter
public boolean canFocusOnViewportCenter()
Determines if the BasicOrbitView can be focused on the viewport centerfocusOnViewportCenter()
. Focusing on the viewport center requires a non-nullGlobe
, a non-nullDrawContext
, and the viewport center is on the terrain.- Specified by:
canFocusOnViewportCenter
in interfaceOrbitView
- Returns:
- true if the BasicOrbitView can focus on the viewport center.
-
focusOnViewportCenter
public void focusOnViewportCenter()
Sets the point of rotation for heading and pitch changes to the surface position at the viewport center.- Specified by:
focusOnViewportCenter
in interfaceOrbitView
-
canFocusOnTerrainCenter
public boolean canFocusOnTerrainCenter()
-
focusOnTerrainCenter
public void focusOnTerrainCenter()
-
setEyePosition
public void setEyePosition(Position eyePosition)
Description copied from interface:View
Sets the geographic position of the eye.- Specified by:
setEyePosition
in interfaceView
- Overrides:
setEyePosition
in classBasicView
- Parameters:
eyePosition
- the eye position.
-
getCurrentEyePoint
public Vec4 getCurrentEyePoint()
Description copied from interface:View
Returns the most up-to-date location of the eye in cartesian coordinates. UnlikeView.getEyePosition()
andView.getEyePoint()
, getCurrentEyePoint will return the View's immediate position.- Specified by:
getCurrentEyePoint
in interfaceView
- Overrides:
getCurrentEyePoint
in classBasicView
- Returns:
- Vec4 of the eye.
-
getCurrentEyePosition
public Position getCurrentEyePosition()
Description copied from interface:View
Returns the current geographic coordinates of this view's eye position, as determined from this view's current parameters.Note: The value returned is not necessarily the value specified to
View.setEyePosition(gov.nasa.worldwind.geom.Position)
but is the eye position corresponding to this view's current parameters.- Specified by:
getCurrentEyePosition
in interfaceView
- Overrides:
getCurrentEyePosition
in classBasicView
- Returns:
- the position of the eye corresponding to the current parameters of this view.
-
setOrientation
public void setOrientation(Position eyePosition, Position centerPosition)
Description copied from interface:View
Sets the location of the eye, and the center of the screen in geographic coordinates. The implementation may interpret this command in whatever way it chooses, so long as the eye is placed at the specifiedeyePosition
, and the center of the screen is the specifiedcenterPosition
. Specifically, implementations must determine what the up direction will be given these parameters, and apply these parameters in a meaningful way.- Specified by:
setOrientation
in interfaceView
- Overrides:
setOrientation
in classBasicView
- Parameters:
eyePosition
- Position of they eye.centerPosition
- Position of the screen center.
-
doApply
protected void doApply(DrawContext dc)
-
afterDoApply
protected void afterDoApply()
-
setModelCoordinates
protected void setModelCoordinates(OrbitViewInputSupport.OrbitViewState modelCoords)
-
validateModelCoordinates
protected boolean validateModelCoordinates(OrbitViewInputSupport.OrbitViewState modelCoords)
-
computeHorizonDistance
protected double computeHorizonDistance(Position eyePosition)
- Overrides:
computeHorizonDistance
in classBasicView
-
computeFarDistance
protected double computeFarDistance(Position eyePosition)
- Overrides:
computeFarDistance
in classBasicView
-
doGetRestorableState
protected void doGetRestorableState(RestorableSupport rs, RestorableSupport.StateObject context)
- Overrides:
doGetRestorableState
in classBasicView
-
doRestoreState
protected void doRestoreState(RestorableSupport rs, RestorableSupport.StateObject context)
- Overrides:
doRestoreState
in classBasicView
-
legacyRestoreState
protected void legacyRestoreState(RestorableSupport rs, RestorableSupport.StateObject context)
Restores state values from previous versions of the BasicObitView state XML. These values are stored or named differently than the current implementation. Those values which have not changed are ignored here, and are restored indoRestoreState(gov.nasa.worldwind.util.RestorableSupport, gov.nasa.worldwind.util.RestorableSupport.StateObject)
.- Parameters:
rs
- RestorableSupport object which contains the state value properties.context
- active context in the RestorableSupport to read state from.
-
addPanToAnimator
public void addPanToAnimator(Position beginCenterPos, Position endCenterPos, Angle beginHeading, Angle endHeading, Angle beginPitch, Angle endPitch, double beginZoom, double endZoom, long timeToMove, boolean endCenterOnSurface)
-
addPanToAnimator
public void addPanToAnimator(Position beginCenterPos, Position endCenterPos, Angle beginHeading, Angle endHeading, Angle beginPitch, Angle endPitch, double beginZoom, double endZoom, boolean endCenterOnSurface)
-
addPanToAnimator
public void addPanToAnimator(Position centerPos, Angle heading, Angle pitch, double zoom, long timeToMove, boolean endCenterOnSurface)
-
addPanToAnimator
public void addPanToAnimator(Position centerPos, Angle heading, Angle pitch, double zoom, boolean endCenterOnSurface)
-
addPanToAnimator
public void addPanToAnimator(Position centerPos, Angle heading, Angle pitch, double zoom)
-
addEyePositionAnimator
public void addEyePositionAnimator(long timeToIterate, Position beginPosition, Position endPosition)
-
addHeadingPitchAnimator
public void addHeadingPitchAnimator(Angle beginHeading, Angle endHeading, Angle beginPitch, Angle endPitch)
-
addZoomAnimator
public void addZoomAnimator(double zoomStart, double zoomEnd)
-
addFlyToZoomAnimator
public void addFlyToZoomAnimator(Angle heading, Angle pitch, double zoomAmount)
-
-