LuciadCPillar 2024.0.08
|
A camera transforms points from the map reference
to view coordinates (device independent pixel coordinates).
More...
#include <luciad/cameras/Camera.h>
Classes | |
struct | Look |
Structure describing the position and orientation of the camera. More... | |
struct | Look2D |
Structure describing the position of the camera for an orthographic top-down view. More... | |
struct | LookAt |
Structure to orient a camera based on a specific target point. More... | |
struct | LookFrom |
Structure describing the position and orientation of the camera. More... | |
Public Member Functions | |
virtual | ~Camera ()=default |
virtual Coordinate | getEye () const =0 |
Returns the current location of the camera in map coordinates . More... | |
virtual double | getFar () const =0 |
Returns the distance from the eye to the far clipping plane. More... | |
virtual Coordinate | getForward () const =0 |
Returns the (normalized) direction corresponding to the forward direction of the view. More... | |
virtual double | getHeight () const =0 |
Returns the height in device independent pixels of the viewport of this camera. More... | |
virtual double | getNear () const =0 |
Returns the distance from the eye to the near clipping plane. More... | |
virtual Coordinate | getUp () const =0 |
Returns the (normalized) direction corresponding to the upward direction of the view. More... | |
virtual double | getWidth () const =0 |
Returns the width in device independent pixels of the viewport of this camera. More... | |
virtual Coordinate | mapToView (Coordinate mapPoint) const =0 |
Transforms a point in map coordinates to view coordinates. More... | |
virtual Coordinate | viewToMap (Coordinate viewPoint) const =0 |
Transforms a view point to map coordinates . More... | |
A camera transforms points from the 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:
eye
point: the 3D position that the camera is looking from, in map coordinates
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.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.near plane
distance: the distance from the eye to the near clipping plane. Points that fall outside of the near/far interval are clipped.far plane
distance: the distance from the eye to the far clipping plane. Points that fall outside of the near/far interval are clipped.width
in device independent pixels of the camera's viewport. This is the same as the Map width
.height
in device independent pixels of the camera's viewport. This is the same as the Map 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.
|
virtualdefault |
|
pure virtual |
Returns the current location of the camera in map coordinates
.
map coordinates
. Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.
|
pure virtual |
Returns the distance from the eye to the far clipping plane.
Points that fall outside of the near/far interval are clipped.
Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.
|
pure virtual |
Returns the (normalized) direction corresponding to the forward direction of the view.
It is defined in the map reference
.
Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.
|
pure virtual |
Returns the height in device independent pixels of the viewport of this camera.
Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.
|
pure virtual |
Returns the distance from the eye to the near clipping plane.
Points that fall outside of the near/far interval are clipped.
Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.
|
pure virtual |
Returns the (normalized) direction corresponding to the upward direction of the view.
It is defined in the map reference
.
Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.
|
pure virtual |
Returns the width in device independent pixels of the viewport of this camera.
Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.
|
pure virtual |
Transforms a point in map 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.
mapPoint | A point, defined in the reference of the Map. |
Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.
|
pure virtual |
Transforms a view point to map 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:
viewPoint | A view point, in device independent pixels. (0, 0) is defined in the top-left corner of the screen. |
Implemented in luciad::OrthographicCamera, and luciad::PerspectiveCamera.