|
NASA World Wind | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface View
The View
interface provides a coordinate transformation from model coordinates to eye
coordinates. This follows the OpenGL convention of a left-handed coordinate system with the origin at the eye point
and looking down the negative Z axis. View
also provides a transformation from eye coordinates to
screen coordinates, following the OpenGL convention of an origin in the lower left hand screen corner.
Most of the accessor and computation methods on View
will use viewing state computed
in the last call to apply(gov.nasa.worldwind.render.DrawContext)
.
The following methods return state values updated in the most recent call to apply.
The following methods return computed values using state that was updated in the most recent call to
apply
.
ViewStateIterator
,
OrbitView
Field Summary | |
---|---|
static java.lang.String |
VIEW_STOPPED
|
Method Summary | |
---|---|
void |
apply(DrawContext dc)
Calculates and applies this View's internal state to the graphics context in
the specified dc . |
void |
applyStateIterator(ViewStateIterator viewStateIterator)
Iterates over View state changes in ViewStateIterator and applies them to the
View . |
double |
computeHorizonDistance()
Gets the distance from the View's eye point to the horizon point on the last rendered
Globe . |
double |
computePixelSizeAtDistance(double distance)
Computes the screen-aligned dimension (in meters) that a screen pixel would cover at a given distance (also in meters). |
Position |
computePositionFromScreenPoint(double x,
double y)
Computes the intersection of a line originating from the eye point (passing throught (x, y)) with the last rendered SectorGeometry , or the last analytical Globe if no rendered geometry exists. |
Line |
computeRayFromScreenPoint(double x,
double y)
Computes a line, in model coordinates, originating from the eye point, and passing throught the point contained by (x, y) on the View's projection plane (or after projection into model space). |
double |
getAutoFarClipDistance()
Returns the auto-configured far clipping plane distance, in eye coordinates. |
double |
getAutoNearClipDistance()
Returns the auto-configured near clipping plane distance, in eye coordinates. |
Vec4 |
getCurrentEyePoint()
Returns the most up-to-date location of the eye in cartesian coordinates. |
Position |
getCurrentEyePosition()
Returns the most up-to-date location of the eye in geographic coordintes. |
Vec4 |
getEyePoint()
Returns the location of the eye in cartesian coordinates. |
Position |
getEyePosition()
Returns the location of the eye in geographic coordinates. |
double |
getFarClipDistance()
Returns the far clipping plane distance, in eye coordinates. |
Angle |
getFieldOfView()
Returns the horizontal field-of-view angle (the angle of visibility), or null if the implementation does not support a field-of-view. |
Vec4 |
getForwardVector()
Returns the forward axis in cartesian coordinates. |
Frustum |
getFrustum()
Returns the viewing Frustum in eye coordinates. |
Frustum |
getFrustumInModelCoordinates()
Returns the viewing Frustum in model coordinates. |
Matrix |
getModelviewMatrix()
Returns the modelview matrix. |
double |
getNearClipDistance()
Returns the near clipping plane distance, in eye coordinates. |
Matrix |
getProjectionMatrix()
Gets the projection matrix. |
Vec4 |
getUpVector()
Returns the up axis in cartesian coordinates. |
java.awt.Rectangle |
getViewport()
Returns the bounds (x, y, width, height) of the viewport. |
boolean |
hadCollisions()
Returns whether or not a collision has occurred since the last call to hadCollisions . |
boolean |
hasStateIterator()
Returns true when View is actively iterating over an instance of ViewStateIterator . |
boolean |
isDetectCollisions()
Returns whether the this View will detect collisions with other objects,
such as the surface geometry. |
void |
popReferenceCenter(DrawContext dc)
Removes the model-view matrix on top of the matrix stack, and restores the original matrix. |
Vec4 |
project(Vec4 modelPoint)
Maps a Point in model (cartesian) coordinates to a Point in screen coordinates. |
Matrix |
pushReferenceCenter(DrawContext dc,
Vec4 referenceCenter)
Defines and applies a new model-view matrix in which the world origin is located at referenceCenter . |
void |
setDetectCollisions(boolean detectCollisions)
Sets whether or not this View will detect collisions with other objects,
such as the surface geometry. |
void |
setEyePosition(Position eyePosition)
Sets the location of the eye in geographic coordinates. |
void |
setFarClipDistance(double distance)
Sets the far clipping plane distance, in eye coordinates. |
void |
setFieldOfView(Angle fieldOfView)
Sets the horiziontal field-of-view angle (the angle of visibillity) to the specified fieldOfView . |
void |
setNearClipDistance(double distance)
Sets the near clipping plane distance, in eye coordinates. |
void |
setOrientation(Position eyePosition,
Position centerPosition)
Sets the location of the eye, and the center of the screen in geographic coordinates. |
void |
stopMovement()
Stops any movement associated with this View . |
void |
stopStateIterators()
Immediately stops all active iteration over ViewStateIterator . |
Vec4 |
unProject(Vec4 windowPoint)
Maps a Point in screen coordinates to a Point in model coordinates. |
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 java.beans.PropertyChangeListener |
---|
propertyChange |
Methods inherited from interface gov.nasa.worldwind.Restorable |
---|
getRestorableState, restoreState |
Field Detail |
---|
static final java.lang.String VIEW_STOPPED
Method Detail |
---|
void apply(DrawContext dc)
View's
internal state to the graphics context in
the specified dc
.
All subsequently rendered objects use this new state. Upon return, the OpenGL graphics context reflects the
values of this view, as do any computed values of the view, such as the modelview matrix, projection matrix and
viewing frustum.
dc
- the current World Wind DrawContext on which View
will apply its state.
java.lang.IllegalArgumentException
- If dc
is null, or if the Globe
or GL
instances in dc
are null.void applyStateIterator(ViewStateIterator viewStateIterator)
View
state changes in ViewStateIterator
and applies them to the
View
. The View
will automatically refresh and request state from
viewStateIterator
until the iteration is complete, or View
has been stopped by invoking
stopStateIterators()
.
viewStateIterator
- the ViewStateIterator
to iterate over.double computeHorizonDistance()
View's
eye point to the horizon point on the last rendered
Globe
.
double computePixelSizeAtDistance(double distance)
distance
- the distance from the eye point, in eye coordinates, along the z-axis. This value must be
positive but is otherwise unbounded.
java.lang.IllegalArgumentException
- if distance
is negative.Position computePositionFromScreenPoint(double x, double y)
SectorGeometry
, or the last analytical Globe
if no rendered geometry exists.
x
- the horizontal coordinate originating from the left side of View's
projection plane.y
- the vertical coordinate originating from the top of View's
projection plane.
Line computeRayFromScreenPoint(double x, double y)
View's
projection plane (or after projection into model space).
x
- the horizontal coordinate originating from the left side of View's
projection plane.y
- the vertical coordinate originating from the top of View's
projection plane.
View's
eye point and passing throught (x, y) transformed into model
space.double getAutoFarClipDistance()
double getAutoNearClipDistance()
Vec4 getCurrentEyePoint()
getEyePosition()
and getEyePoint()
,
getCurrentEyePoint will return the View's immediate position.
Position getCurrentEyePosition()
getEyePosition()
and getEyePoint()
,
getCurrentEyePosition will return the View's immediate position.
Vec4 getEyePoint()
apply
.
Position getEyePosition()
apply
.
double getFarClipDistance()
getAutoFarClipDistance()
Angle getFieldOfView()
Vec4 getForwardVector()
apply
.
Frustum getFrustum()
Frustum
in eye coordinates. The Frustum
is the portion
of viewable space defined by three sets of parallel 'clipping' planes.
This value is computed in the most recent call to apply
.
Frustum getFrustumInModelCoordinates()
Frustum
in model coordinates. Model coordinate frustums are useful for
performing visibility tests against world geometry. This frustum has the same shape as the frustum returned
in getFrustum
, but it has been transformed into model space.
This value is computed in the most recent call to apply
.
Matrix getModelviewMatrix()
apply
.
double getNearClipDistance()
getAutoNearClipDistance()
.
Matrix getProjectionMatrix()
View
. The method getFrustum()
returns the geometry corresponding to this matrix.
This value is computed in the most recent call to apply
.
Vec4 getUpVector()
apply
.
java.awt.Rectangle getViewport()
apply
.
boolean hadCollisions()
hadCollisions
.
If isDetectCollisions()
is false, collisions will not be detected and
hadCollisions
will always return false.
true
if a collision has occurred since the last call; false
otherwise.boolean hasStateIterator()
View
is actively iterating over an instance of ViewStateIterator
.
ViewStateIterator
; false otherwise.boolean isDetectCollisions()
View
will detect collisions with other objects,
such as the surface geometry. If true, implementations may also automatically
resolve any detected collisions.
true
If this View
will detect collisions; false
otherwise.void popReferenceCenter(DrawContext dc)
dc
- the current World Wind drawing context on which the original matrix will be restored.
java.lang.IllegalArgumentException
- if dc
is null, or if the Globe
or GL
instances in dc
are null.Vec4 project(Vec4 modelPoint)
Point
in model (cartesian) coordinates to a Point
in screen coordinates. The
returned x and y are relative to the lower left hand screen corner, while z is the screen depth-coordinate. If
the model point cannot be sucessfully mapped, this will return null.
modelPoint
- the model coordinate Point
to project.
Point
.
java.lang.IllegalArgumentException
- if modelPoint
is null.Matrix pushReferenceCenter(DrawContext dc, Vec4 referenceCenter)
referenceCenter
.
Geometry rendered after a call to pushReferenceCenter
should be transformed with respect to
referenceCenter
, rather than the canonical origin (0, 0, 0). Calls to
pushReferenceCenter
must be followed by popReferenceCenter(gov.nasa.worldwind.render.DrawContext)
after rendering is complete.
Note that calls to getModelviewMatrix()
will not return reference-center model-view matrix, but the
original matrix.
dc
- the current World Wind drawing context on which new model-view state will be applied.referenceCenter
- the location to become the new world origin.
referenceCenter
, or null if this method failed.
java.lang.IllegalArgumentException
- if referenceCenter
is null, if dc
is null, or if the
Globe
or GL
instances in dc
are null.void setDetectCollisions(boolean detectCollisions)
View
will detect collisions with other objects,
such as the surface geometry. If detectCollisions
is true, implementations may also automatically
resolve any detected collisions.
detectCollisions
- If true
, this View
will resolve collisions; otherwise this
View
will ignore collisions.void setEyePosition(Position eyePosition)
eyePosition
.
eyePosition
- Position of the eye.
java.lang.IllegalArgumentException
- If eyePosition
is null.void setFarClipDistance(double distance)
distance
- the far clipping plane distance.
java.lang.IllegalArgumentException
- if distance
is not valid, and the implementation does not
specially treat invalid values.void setFieldOfView(Angle fieldOfView)
fieldOfView
.
This may be ignored if the implementation that do not support a field-of-view.
fieldOfView
- the horizontal field-of-view angle.
java.lang.IllegalArgumentException
- If the implementation supports field-of-view, and
fieldOfView
is null.void setNearClipDistance(double distance)
distance
- the near clipping plane distance.
java.lang.IllegalArgumentException
- if distance
is not valid, and the implementation does not
specially treat invalid values.void setOrientation(Position eyePosition, Position centerPosition)
eyePosition
,
and the center of the screen is the specified centerPositoin
.
Specifically, implementations must determine what the up direction will be given
these parameters, and apply these parameters in a meaningful way.
eyePosition
- Position of they eye.centerPosition
- Position of the screen center.void stopMovement()
View
. This will stop any currently active
ViewStateIterators
on this View
.
void stopStateIterators()
ViewStateIterator
.
Vec4 unProject(Vec4 windowPoint)
Point
in screen coordinates to a Point
in model coordinates. The input x and y
are relative to the lower left hand screen corner, while z is the screen depth-coordinate. If the screen point
cannot be sucessfully mapped, this will return null.
windowPoint
- the window coordinate Point
to project.
Point
.
java.lang.IllegalArgumentException
- if windowPoint
is null.
|
NASA World Wind | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |