Class Camera
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
OrthographicCamera
,PerspectiveCamera
map reference
to view coordinates (device independent pixel coordinates).
In layman's terms: just like with television, the camera's position, orientation (and other parameters like the projection) determines what is shown on screen.
Note that the Camera
API is a low-level API. For simple map navigation use cases, it's recommended to use the higher-level API. The MapNavigator
API works in both 2D and 3D, on all map references. If you use the low-level Camera
API, keep in mind that the same camera manipulation implementation might not work for other types of cameras (OrthographicCamera
vs PerspectiveCamera
) or other (types of) map references (projected vs. geocentric).
This is a base class shared by both PerspectiveCamera
and OrthographicCamera
. It describes the position, orientation and viewport of the camera, as well as provide functions to transform between 3D map
and view (device independent pixel coordinates on the camera's viewport) points.
The camera's position, orientation and viewport are described by the following parameters:
- The
eye
point: the 3D position that the camera is looking from, inmap coordinates
- The
forward
vector: the 3D direction the camera is looking in, in map coordinates. The combination of the forward and up vector determines the orientation of the camera, in map space. - The
up
vector: the 3D direction that indicates the up direction of the camera, in map coordinates. The combination of the forward and up vector determines the orientation of the camera, in map space. - The
near plane
distance: the distance from the eye to the near clipping plane. Points that fall outside of the near/far interval are clipped. - The
far plane
distance: the distance from the eye to the far clipping plane. Points that fall outside of the near/far interval are clipped. - The
width
in device independent pixels of the camera's viewport. This is the same as theMap width
. - The
height
in device independent pixels of the camera's viewport. This is the same as theMap height
.
In practice, you only work with PerspectiveCamera
and OrthographicCamera
. Besides the camera position, orientation and viewport, these subclasses also define a projection (orthographic vs. perspective).
Unlike Map.ViewMapTransformation
, the coordinate conversion
methods
do not take into account the content on the screen. The camera's methods are nothing more than low-level mathematical functions. In most cases, it is advised to convert coordinate from view to map and vice versa using Map.ViewMapTransformation
.
See also related article.
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
Structure describing the position and orientation of the camera.static final class
Structure describing the position of the camera for an orthographic top-down view.static final class
Structure toorient
a camera based on a specific target point.static final class
Structure describing the position and orientation of the camera. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
protected void
finalize()
getEye()
Returns the current location of the camera inmap coordinates
.double
getFar()
Returns the distance from the eye to the far clipping plane.Returns the (normalized) direction corresponding to the forward direction of the view.double
Returns the height in device independent pixels of the viewport of this camera.double
getNear()
Returns the distance from the eye to the near clipping plane.getUp()
Returns the (normalized) direction corresponding to the upward direction of the view.double
getWidth()
Returns the width in device independent pixels of the viewport of this camera.mapToView
(Coordinate mapPoint) Transforms a point inmap coordinates
to view coordinates.viewToMap
(Coordinate viewPoint) Transforms a view point tomap coordinates
.
-
Method Details
-
finalize
protected void finalize() -
close
public void close()- Specified by:
close
in interfaceAutoCloseable
-
getEye
Returns the current location of the camera inmap coordinates
.- Returns:
- the current location of the camera in
map coordinates
.
-
getForward
Returns the (normalized) direction corresponding to the forward direction of the view.It is defined in the
map reference
.- Returns:
- the (normalized) direction corresponding to the forward direction of the view.
-
getUp
Returns the (normalized) direction corresponding to the upward direction of the view.It is defined in the
map reference
.- Returns:
- the (normalized) direction corresponding to the upward direction of the view.
-
getNear
public double getNear()Returns the distance from the eye to the near clipping plane.Points that fall outside of the near/far interval are clipped.
- Returns:
- the distance from the eye to the near clipping plane.
-
getFar
public double getFar()Returns the distance from the eye to the far clipping plane.Points that fall outside of the near/far interval are clipped.
- Returns:
- the distance from the eye to the far clipping plane.
-
getWidth
public double getWidth()Returns the width in device independent pixels of the viewport of this camera.- Returns:
- the width in device independent pixels of the viewport of this camera.
-
getHeight
public double getHeight()Returns the height in device independent pixels of the viewport of this camera.- Returns:
- the height in device independent pixels of the viewport of this camera.
-
viewToMap
Transforms a view point tomap coordinates
.When the camera is a perspective camera, the z-value of the view point is used to determine the depth of the
Map
point:- -∞ => the point is located on the eye point of the camera
- ]-∞, 0[ => the point is located between the camera eye point and the
near plane
- [0, 1] => the point is between the
near plane
and thefar plane
- ]1, far/(far-near)] => the point is located beyond the
far plane
. - ]far/(far-near), +∞[ => the point is located behind the camera.
- Note
- This method does not take terrain or earth geometry into account. For most use cases, it is preferred to use the
ViewMapTransformation
to convert a view location to a map point on the terrain or a visible surface.
- Parameters:
viewPoint
- A view point, in device independent pixels. (0, 0) is defined in the top-left corner of the screen.- Returns:
- a point defined in the reference of the
map reference
.
-
mapToView
Transforms a point inmap coordinates
to view coordinates.For perspective cameras, the resulting view coordinate will contain a z-coordinate. This allows to transform the resulting view point back to the original point.
- Note
- This method does not take into account the visibility of a map location. It will, for example, convert the point regardless of whether it is clipped away or not by the rendering pipeline. For most use cases, it is preferred to use the
ViewMapTransformation
to convert a location in map coordinates to view coordinates.
- Parameters:
mapPoint
- A point, defined in the reference of theMap
.- Returns:
- a point in view coordinates, in device independent pixels. (0, 0) is defined in the top-left corner of the screen.
-